1

我正在使用 jquery impromptu dialogs 开发基于 Web 的应用程序。我正在使用这段代码:

var statesdemo = {
        state0 : {
            title : 'here',
            html : '<label>Name <input type="text" id="fname" name="fname" value="1"></label><br />',
            /* + '<label><input type="text" name="lname" onclick="iconPrompt()" value="Change Image"></label><br />', */

            buttons : {
                ChangeImage : -1,
                Delete : -2,
                Save : false,
                cancel : true
            },
            focus : 0,

            submit : function(e, v, m, f) {
                console.log(f);

                if (v == -2) {
                    $('.1' ).remove();
                    $.prompt.close();
                }

                if (!v) {
                    $('#pos')
                            .append(
                                    $('<div id="image" class="new"  onclick=\"openprompt()"><label>"'
                                            + document
                                                    .getElementById('fname').value
                                            + '"</label><br /></div>'));

                    $.prompt.close();
                } else if (v) {

                    $.prompt.close();
                }

                if (v == -1) {
                    $.prompt.goToState('changeImage');
                }

                return false;
            }
        },
        changeImage : {
            title : "Choose Image",
            html : '<div class="imageContainer">'
                    + '<div style="top: 0; left: 0; width: 100px; height: 50px"></div>'
                    + '<div style="top: 0; left: 0; width: 100px; height: 50px"></div>'
                    + '<div style="top: 0px; left: 0; width: 100px; height: 50px"></div>'
                    + '<div style="top: 0px; left: 0px; width: 100px; height: 50px"></div></div>',

            buttons : {
                Done : 1
            },
            focus : 2,

            submit : function(e, v, m, f) {
                /* console.log(f);

                e.preventDefault();
                if (v == 1)
                    {
                    $.prompt.goToState('state0');}
                return false; */



            }
        },

    };

它运行良好,直到我在第一个状态下按下 ChangeImage Button。第二状态闪烁并在一秒钟内关闭。我在做什么错请帮忙。我被困了几个小时。

4

2 回答 2

1

你可能忘记了 return false;在 if (v) { .. } 示例中:

state0: {
  title: 'this is the title',
  html: '<p>this is the html',
  submit: function(e,v,m,f) {
    if (v) {
      //validation here

      return false;
    }
  }
},
state1: {
 ......
}
于 2013-08-28T17:13:05.720 回答
0

抱歉恢复这个查询,但可能缺少什么(我遇到了同样的问题,因为我从他们的示例中复制和测试)是下一个selse之前的语句if

假设您希望它与第一个匹配IF并且代码成功(这就是它闪烁的原因。当执行跳转到下一行时,它会找到另一个 if 来评估。但条件不正确,它会转到 this if's else.got它?

例子:

输入为 2

if(input == 2){...} //matched
if(!input){...}
else{...} //matched again because previous `if` didn't match
于 2015-02-19T18:00:18.090 回答