2013-08-03 60 views
1

我正在使用jQuery即席對話框在基於Web的應用程序上工作。我使用此代碼:jQuery中的第二個狀態即興閃爍並關閉?

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按鈕運行正常。第二個狀態在一秒鐘後閃爍並關閉。我做錯了什麼,請幫忙。我被困了幾個小時。

+0

如果我們有一些HTML標記來看看這會更容易解決。你爲什麼不創建一個jsFiddle? – DevlshOne

回答

1

你可能忘了返回false;在if(五){..} 例:

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: { 
...... 
} 
0

抱歉ressurect此查詢,但可能缺什麼(和我有同樣的問題,因爲我複製並從他們的榜樣測試)是else聲明中先下一if小號

假設你希望它匹配第一個IF和代碼succeded(這就是爲什麼它閃爍。當執行跳轉到它找到另一個如果評估下一行。但條件是不正確的,它是如果的else。得到它?

例如:

輸入2

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