2014-12-15 3 views
-1

Мне нужно использовать функцию для установки данных перед отправкой формы, я использую onclick для вызова моей функции, но когда я нажимаю кнопку, все передается без прохождения через функцию javascript , Вот мой код:Функция Javascript не называется

<html> 
<head> 
    <title>Biblioteca Jsp</title> 
</head> 
<script> 
    var checkedBookList = []; 

    function checkBook(id) { 
     var check = document.getElementById(id); 
     checkedBookList[id] = check.checked; 
    } 

    function submit(){ 
     document.forms["frBookaBook"].selectedBooks = checkedBookList; 
     alert(""); 
     document.forms["frBookaBook"].submit(); 
    } 
</script> 
<body> 
    <h1 align="center">Elenco libri</h1> 
    <hr> 
     <table align="center" cellspacing="5" cellpadding="5" border="1"> 
      <tr> 
       <th><font color="#822222"> Nome </font></th> 
       <th><font color="#822222"> Autore </font></th> 
       <th><font color="#822222"> Tipologia </font></th> 
      </tr> 
      <% List<MyBook> books = (List<MyBook>)session.getAttribute("bookList"); 
       String listBook = null; 
       if(books!=null && !books.isEmpty()){ 
        for (MyBook myBook : books) { %>  
      <tr> 
       <td><%=myBook.getBkName() %></td>   
       <td><%=myBook.getBkAuthor() %></td> 
       <td><%=myBook.getBkClass() %></td> 
       <td><input type="checkbox" onChange="checkBook('<%=myBook.getBkID()%>')" 
          id="<%=myBook.getBkID()%>" name="<%=myBook.getBkName()%>" <% if(myBook.getBkBusy()!=null) { %> disabled="disabled" /> Busy <%} else{ %> /> <%}%> 
       </td> 
      </tr> 
      <%  } 
       }%> 
     </table> 
     <hr> 
    <form id="frBookaBook" action="ServletBiblio" method="post" onsubmit="return false"> 
     <div align="center"> 
      <input type="hidden" 
        id="actionToDo" name="actionToDo" 
        value="selectedBooks"/>     
      <input type="button" 
        id="Prenota" name="Prenota" onclick="submit()" 
        value="Prenota" /> 
     </div> 
    </form> 
</body> 
</html> 
+2

почему вы написали onsubmit = "return false" ?? – Alok

+0

На мой взгляд: вы должны просто вызвать функцию отправки, а не по щелчку кнопки, но внутри функции onsubmit, тогда вы вызываете e.preventDefault(), если вы не хотите отправлять форму, и ничего не делаете, если хотите ее обработать , – Beri

+0

попробуйте этот 'onclick =" return submit(); ". а затем верните true или false из вашей функции, хотите ли вы отправить форму или нет. – Adi

ответ

2

изменить название функции представить submitt или что-нибудь 'Отправить' зарезервирован ..

<html> 
<head> 
<script> 
    var checkedBookList = []; 
    function checkBook(id) { 
     var check = document.getElementById(id); 
     checkedBookList[id] = check.checked; 
    } 

    function submitt(){ 
     document.forms["frBookaBook"].selectedBooks = checkedBookList; 
     alert(""); 
     document.forms["frBookaBook"].submit(); 
     return true; 
    } 

</script> 
</head> 
<body> 
<form id="frBookaBook" action="ServletBiblio" method="post" onsubmit="return submitt()"> 
     <div align="center"> 
      <input type="hidden" 
        id="actionToDo" name="actionToDo" 
        value="selectedBooks"/>     
      <input type="submit" 
        id="Prenota" name="Prenota" 
        value="Prenota" /> 
     </div> 
    </form> 
</body> 
</html> 
-2

Вы должны отключить форму перед функцией перегрузки, как это.

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#form-licence').submit(function() { 
      return false; 
     }); 
    }); 
</script> 

Код HTML

<input type="button" id="Prenota" name="Prenota" onclick="submit(); return false;" value="Prenota" /> 
+0

не выглядит так, как OP использует JQuery. –

0

Alok был быстрее и имеет лучший ответ , (изменить)

Переименуйте функцию submit(), например, beforeSubmit(). В этом контексте предложение кажется зарезервированным. Вы также можете подумать о том, чтобы использовать onsubmit-событие вашей формы, вместо этого нажмите кнопку. И может быть, ваша кнопка должна быть type = "submit" ...

Смежные вопросы