首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >priority-web-sdk:实现选择字段

priority-web-sdk:实现选择字段
EN

Stack Overflow用户
提问于 2017-06-24 16:48:23
回答 2查看 73关注 0票数 1

我正在尝试实现一个带有<select>控件的选择字段。

代码语言:javascript
复制
<div id="container" onchange="fieldChangeHandler(event)">

...

<div class="item" >
    <label>Status</label>
    <select id="STATDES" onfocus="focusdiv(event)" onblur="defocusdiv(event)"></select>
</div>

updateFields()处理程序中,我标识了控件类型:

代码语言:javascript
复制
function updateFields(result) {
    if (result[myForm.name]) {
        var fields = result[myForm.name][1];
        for (var fieldName in fields) {
            var el = document.getElementById(fieldName);
            if (el) {
                switch (el.nodeName){                       
                    case "INPUT":
                        el.value = fields[fieldName];
                        break;

                    case 'SELECT':                  
                        fill(el, fields[fieldName]);
                        el.value = fields[fieldName];
                        break;

                };
            };
        }
    }
}

...And如果控件是一个<select>,我将通过调用窗体choose来填写选项

代码语言:javascript
复制
function fill(el, sel){
    myForm.choose(el.id, "").then(
        function (searchObj) {
            var i, ch;
            $('#'+el.id).empty();
            for (i in searchObj.ChooseLine) {
                ch = searchObj.ChooseLine[i];
                if (ch.string1 == sel){
                    $("#"+el.id).append('<option selected value="'+ ch.string1 +'">'+ ch.string1 +'</option>');
                } else {
                    $('#'+el.id).append('<option value="'+ ch.string1 +'">'+ ch.string1 +'</option>');                  
                };
            };
        },

        function (serverResponse) {
            alert(serverResponse.message);

        }

    );
};

<select> onchange事件对fieldChangeHandler的后续调用在加载的窗体上调用fieldUpdate方法:

代码语言:javascript
复制
        function fieldChangeHandler(event) {
            console.log("%s=%s", event.srcElement.id, event.target.value);
            myForm.fieldUpdate(event.srcElement.id, event.target.value);

        }

这一切都很好,直到我尝试保存当前的表单记录。

代码语言:javascript
复制
function saveHandler() {
    myForm.saveRow(
        0, 
        function(){
            console.log("Row Saved.");
        }, 
        function(serverResponse){
            console.log("%j", serverResponse);
        });
}

其中,我得到了以下输出:

代码语言:javascript
复制
Object {type: "error", ...}
code:"stop"
fatal:false
form:Object
message:"Status missing."
type:"error"
__proto__:Object

我如何重写saveRow函数,让它从<select>控件中检索数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-24 17:12:24

必须在choose参数中指定当前值。它不会从当前记录中读取它,因为我(错误地)读取了文档。

代码语言:javascript
复制
Note: If the field currently cotains a value, it will automatically be 
filled in as fieldValue, even if a different fieldValue was specified.

因此,fill函数应该如下所示...

代码语言:javascript
复制
function fill(el, sel){
    myForm.choose(el.id, sel).then(

                ...

};
票数 0
EN

Stack Overflow用户

发布于 2017-06-26 05:19:08

我只想指出一件事。在字段更新之后,不必调用choose方法:myform.choose

我知道在我们的情况下,选择列表为每个字段更新获取不同的值,并且您需要更新您的select。这很酷,但如果有人使用的选择列表在字段更新后没有更改,最好只调用此方法一次!

在这里编写它只是为了澄清有关choose方法的事情:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44734620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档