2013-11-26 70 views
0

我有jsp文件,其中包含html和js函數。現在我正試圖避免在jsp中寫入js。所以我創建了一個單獨的js文件,並將腳本從jsp移動到js文件。除了下面的代碼,一切正常。onclick ofr單選按鈕jquery

現有代碼

<input class="required" type="radio" name="radio" id="radio_yes" onclick="showDetails();"/> 

<%if(isOwner.equalsIgnoreCase("true")){%> 
    <script> 
    var a = document.getElementById("radio_yes"); 
    var evnt = a["onclick"]; 
    if (typeof(evnt) == "function") { 
     evnt.call(a); 
    } 
</script> 
<%} 

<script> 
    function showDetails(){//Code 
    } 
</script> 

這上面的代碼中存在的jsp。我試圖將js函數showDetails()移動到一個單獨的js文件中,如下所示。也刪除了html中的onClick函數。 移動

<input class="required" type="radio" name="radio" id="radio_yes"/> 

JS文件(test.js)

$(function() { 
    $('#radio_yes').click(showDetails); 

    function showDetails(){//Code 
    } 
}); 

但是,當我分開這個樣子,我不知道怎麼寫的JS文件中單選按鈕下面的腳本之後。這是一個現有的代碼,我不知道爲什麼我們必須編寫像這樣的單選按鈕的onclick。

<script> 
    var a = document.getElementById("radio_yes"); 
    var evnt = a["onclick"]; 
    if (typeof(evnt) == "function") { 
     evnt.call(a); 
    } 
</script> 

功能是,當用戶點擊收音機時,會顯示一些當前隱藏的文本字段。用戶填寫詳細信息並轉到下一頁。當用戶再次回到這個頁面時,如果點擊單選按鈕,它應該顯示所有帶有用戶輸入數據的文本字段。現在我的問題是,單選按鈕顯示爲選中狀態,但當我回到此頁面時,下面的文本字段不會顯示。 似乎點擊是在用戶返回時觸發的。因爲一旦我回來的文本字段不顯示。如果再次單擊yes單選按鈕,則會顯示字段。

有人可以幫我嗎?

+0

我認爲你需要使用像'$('#radio_yes')觸發器'trigger('click')' – Satpal

+0

@ Satpal ..感謝您的回覆。所以我應該從jsp中刪除avove代碼並在js文件中寫入$('#radio_yes')。trigger('click') – user1049057

+0

是的,您需要這樣做 – Satpal

回答

0

你可以做什麼了這一點:

看到,如果你重定向到其他網頁,當你回到這個頁面再次,如果你radio被選中,那麼你必須做一些if(){}檢查,看看是否有ELEM被檢查火災click事件。

$(function(){ //<---------this is document ready 
    if($('#radio_yes:checked').length > 0){ 
     $('#radio_yes').click(showDetails).click(); //<----trigger it on load 
    } 
    $('#radio_yes').click(showDetails); 
}); 

function showDetails(){// <--move this in global scope 
} 

更新:

<%if(isOwner.equalsIgnoreCase("true")){%> 
<script> 
    $(function(){ //<---------this is document ready 
    if($('#radio_yes:checked').length > 0){ 
     $('#radio_yes').click(showDetails).click(); //<----trigger it on load 
    } 
    $('#radio_yes').click(showDetails); 
    }); 
</script> 
<%}%> 

,你可以在一個單獨的js文件移動你的showDetails功能和上面的腳本之前添加。

+0

@ Jai ..感謝您的答覆。這是做什麼的? $( '#radio_yes')點擊(showDetails)。點擊();此外,我不能這樣做的頁面加載因爲這個單選按鈕不會總是被檢查。只有這樣的話,它應該顯示下面的字段..我有更新的dmy問題..你可以檢查, – user1049057

+0

好吧..我已經更新了qn ..讓我知道如果你需要澄清這個...它檢查一個條件,如果它是真的,那麼必須執行收音機上的點擊事件。 – user1049057

+0

@ user1049057看到更新可能是這可能有所幫助。 – Jai