2013-11-26 4 views
0

У меня есть файл jsp с включенной функцией html и js. Теперь я пытаюсь не писать js внутри jsp. Поэтому я создал отдельный файл js, и я перемещаю скрипты из jsp в файл js. Все работает отлично, за исключением приведенного ниже кода.onclick ofr radio button 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, как показано ниже. Также удалена функция onClick в html. После переезда

<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> 

Функциональность: когда пользователь щелкает радио, отображаются некоторые текстовые поля, которые в настоящее время скрыты. Пользователь заполняет детали и переходит на следующую страницу. Когда пользователь снова вернется на эту страницу, если щелкнут переключатель, он должен отображать все текстовые поля с данными, введенными пользователем. Теперь моя проблема заключается в том, что переключатель отображается как отмеченный, но нижеуказанные текстовые поля не отображаются, когда я возвращаюсь на эту страницу. Кажется, что щелчок не запускается, когда пользователь возвращается. Потому что, как только я вернусь, текстовые поля не отображаются. Если я снова нажму кнопку «Да», появятся поля.

Может ли кто-нибудь помочь мне в этом?

+0

Я думаю, вам нужно использовать 'trigger' как' $ ('# radio_yes'). Trigger ('click') ' – Satpal

+0

@ Satpal..Спасибо за ответ. Таким образом, я должен удалить код avove из jsp и написать внутри js-файла как $ ('# radio_yes'). Trigger ('click') – user1049057

+0

Да, вам нужно это сделать – Satpal

ответ

0

Что вы можете сделать для этого:

посмотреть, если вы перенаправлены на другую страницу, и когда вы вернетесь на эту страницу еще раз, и если ваш radio будет установлен, то вы должны сделать некоторые if(){} чек и посмотреть, если это эль проверяется пожар 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> 
<%}%> 

и вы можете переместить функцию ShowDetails в отдельном файле JS и добавить перед тем выше сценария.

+0

@ Jai..thanks for ur reply. что это делает? . $ ('# Radio_yes') нажмите (ShowDetails) .click(); Также я не могу сделать это при загрузке страницы, потому что этот переключатель не будет всегда проверяться. Только если это отмечено, оно должно отображать следующие поля. У меня есть вопрос о дате dmy. Пожалуйста, проверьте пожалуйста, что – user1049057

+0

Хорошо .. Я обновил qn .. Позвольте мне знать, если вам нужно какое-либо разъяснение по этому вопросу ... Он проверяет одно условие, и если оно истинно, тогда необходимо выполнить событие click на радио. – user1049057

+0

@ user1049057 см. Обновления, возможно, это может помочь. – Jai