JQuery即兴的第二个状态闪烁并关闭?

时间:2013-08-03 12:12:13

标签: jquery jquery-ui impromptu

我正在使用jquery即兴对话框开发基于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按钮。第二个状态在一秒钟内闪烁。我做错了什么,请帮忙。我被困了几个小时。

2 个答案:

答案 0 :(得分:1)

你可能忘记了返回虚假;在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: {
 ......
}

答案 1 :(得分:0)

很抱歉重新确认此查询,但可能缺少的内容(我遇到同样的问题,因为我从他们的示例中复制并测试过)是下一个else之前的if语句

让我们说你希望它匹配第一个IF并且代码成功(这就是它闪烁的原因&#39;当执行跳转到下一行它找到另一个时如果要进行评估。但条件不正确,如果else已经得到了它,那就去了吗?

示例:

输入为2

if(input == 2){...} //matched
if(!input){...}
else{...} //matched again because previous `if` didn't match