2012-05-01 87 views
1

我做了以下小型的JavaScript腳本,使我的網頁上某種形式的元素:JavaScript函數不會被調用所有

function unHide() 
{ 
    if($('#UserName').val() == "") 
    { 
     alert('Please Enter a User Name first'); 
    } 
    else 
    { 
     $('#radio-choice-1').checkboxradio('enable'); 
     $('#radio-choice-2').checkboxradio('enable'); 
     $('#radio-choice-1-board').checkboxradio('enable'); 
     $('#radio-choice-2-board').checkboxradio('enable'); 
     $('#TransNum').textinput('enable'); 
     $('#UserContinue').remove(); 
     $('#nextButton').show(); 
    } 
} 

的問題是,這是不被點擊正確的按鈕時調用。即使警報沒有顯示出來。這裏是HTML:

<label for="UserName" style="vertical-align: top;">User Name:</label> 
<input type="text" name="UserName" id="UserName" placeholder="Ex: LesniakBjEVS101" /> 

... 

<a data-role="button" data-icon="check" data-mini="true" id="UserContinue" 
    style="float:right;" onclick="javascript:unHide(); return false;">Continue...</a> 

... 

<section id="nextButton" hidden> 
    <a href="salamanderSelect.html" data-role="button" data-icon="forward" 
      data-mini="true" style="float:right;">Next</a> 
</section> 

我遇到的問題是當我點擊提交按鈕時,絕對沒有任何反應。我沒有收到Javascript的任何反饋,也沒有任何反饋。

任何幫助將不勝感激! 謝謝!

編輯:

嘗試建議後,我依然無法得到的JavaScript做任何事情。我嘗試了多個瀏覽器,但仍然沒有。

我只是有這個工作太昨天......沒有任何改變代碼太

編輯2:

顯然,它工作,如果我的腳本是在HTML文件中的最後一件事,即使外的標籤。

+0

是什麼,顯示在控制檯中了? – Sampson

+0

只是建議將代碼中的點擊處理程序放在標記中。簡單的用jQuery'$('#UserContinue')。click(function(){unHide();});' –

回答

4

雖然onclick並不需要javascript:,它應該仍然可以在許多瀏覽器中工作。這裏是你的例子jsfiddle:http://jsfiddle.net/ukWcp/2/

只在href使用javascript:

雖然我建議在firebug或chrome中使用javascript控制檯和調試器進行調試,但其他人已經提到使用所有javascript解決方案進行綁定。這是可取的。

+0

永遠不會知道......只是試圖學習JS,因爲我去...謝謝! – Brendan

4

由於您已經使用jQuery,爲什麼不使用它來附加事件,而不是使用笨重的onclick屬性。

<a data-role="button" data-icon="check" data-mini="true" id="UserContinue" 
style="float:right;">Continue...</a> 
$("#UserContinue").click(function(e) { 
    if($('#UserName').val() == "") { 
     alert('Please Enter a User Name first'); 
    } 
    else { 
     $('#radio-choice-1').checkboxradio('enable'); 
     $('#radio-choice-2').checkboxradio('enable'); 
     $('#radio-choice-1-board').checkboxradio('enable'); 
     $('#radio-choice-2-board').checkboxradio('enable'); 
     $('#TransNum').textinput('enable'); 
     $('#UserContinue').remove(); 
     $('#nextButton').show(); 
    } 
    e.preventDefault(); 
}); 
+0

我從來不知道你可以這樣做......這是做這件事的首選方式嗎?謝謝! – Brendan

+0

這絕對是通過jQuery添加事件的最佳實踐。 –

+1

@Brendan即使您不使用jQuery,也可以使用常規Javascript添加事件,因爲它可以讓您更好地分離Javascript和HTML。 –

1
$(document).ready(function() { 
    $("#UserContinue").click(function() { 
     if($('#UserName').val() == "") 
     { 
      alert('Please Enter a User Name first'); 
     } 
     else 
     { 
      $('#radio-choice-1').checkboxradio('enable'); 
      $('#radio-choice-2').checkboxradio('enable'); 
      $('#radio-choice-1-board').checkboxradio('enable'); 
      $('#radio-choice-2-board').checkboxradio('enable'); 
      $('#TransNum').textinput('enable'); 
      $('#UserContinue').remove(); 
      $('#nextButton').show(); 
     } 

     return false; 
    ); 
}); 

如果你使用jQuery,爲什麼不充分利用呢?如果這是您所期望的,那麼在最後返回false會阻止點擊事件繼續。

編輯:

你在你原來的文章說:「我遇到的問題是,當我點擊提交按鈕,絕對沒有任何反應,我不從JavaScript,也沒有任何東西得到任何留言反饋。」

然而,您已將一個點擊事件附加到您的不完整錨標記(它缺少href)。那麼你是否期望單擊提交按鈕或單擊錨標籤時觸發該行爲?如果您希望點擊提交按鈕觸發觸發器,那麼您需要更改$(「#UserContinue」)來引用提交按鈕而不是錨標籤。或使用.submit()事件處理程序代替.click(),http://api.jquery.com/submit/

如果這不是問題,那麼我建議您編輯您的帖子以包含您的所有代碼,並說明在點擊哪些元素後您期望的行爲。

編輯2:

我相信你是不是你的包裹的jQuery環繞。就緒()函數,請看到修改後的代碼片段,現在包括。就緒()。 .ready()確保在使用jQuery之前完全加載DOM。

+0

我剛剛在Firefox和Chrome中嘗試了這個解決方案,但它仍然無法正常工作。我沒有得到任何東西,也沒有任何反饋。 – Brendan

+0

Brendan,請參閱編輯。 – Anarchtica

+0

如果我的腳本是我文檔中的最後一個東西,它就可以工作。 – Brendan

1

保持你的函數和事件處理程序添加到您的javacript而不是標記:

$(document).ready(function() { 
    $('#UserContinue').click(function() { 
     unHide(); 
    }); 
}); 

短版:

$(document).ready(function() { 
    $('#UserContinue').click(unHide); 
});