2012-10-27 35 views
-1

改變其他值我在我的HTML表單兩個選擇塊:如何防止javascript函數從HTML表單

<select id="select1"> 
<option>1</option> 
<option>2</option> 
<option>3</option> 
</select> 

<select id="select2" onchange="someFunc()"> 
<option>A/option> 
<option>B</option> 
</select> 

我從表單標籤@onSubmit稱爲validateForm()函數。 「someFunc」函數在窗體的其他地方填充一些innerHTML。我遇到的問題是,當我點擊提交時,select1的值恢復到其原始默認值,並且validateForm函數失敗。

的someFunc功能是很長,所以我沒有張貼了整個事情,但實際上它的作用是檢查一個字符串值和填充HTML,如:

​​

有另一種ATT除了@的onChange?

好吧,這裏是描述我遇到的問題,一個完整的HTML表單:

<html> 
<head> 
<title>javascript q</title> 
<script> 
    function updateTag(){ 
document.getElementById('newHeading').innerHTML='<p  id="status">updated</p>'; 

    } 


    function validateForm(){ 
     var s1 = document.getElementById('select1'); 
     var s2 = document.getElementById('select2'); 

     if(s1.value = 'please select'){ 
       alert('please select a value from the pulldown'); 
       return false; 
      } 

     // updated html needs to have been performed and value selected 
     if(document.getElementById('status') == null){ 
       alert('status does not exist'); 
      } 

    } 

</script> 

</head> 
<body> 

<h1>Javascript Q</h1> 

<form id="testForm" onSubmit="return validateForm();"> 

<select id="select1"> 
    <option>please select</option> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
</select> 

<select id="select2" onchange="updateTag()"> 
    <option>please select</option> 
    <option>a</option> 
    <option>b</option> 
    <option>c</option> 
</select> 
<input type="submit" value="submit"/>  
<div id="newHeading"> 

</div> 


</form> 
</body> 
</html> 

會發生什麼,我請從每個下拉值,點擊提交,然後選擇1的值恢復到其原始值,並驗證失敗

希望更好。

感謝, BP

+0

我們能有一個小提琴? – MyBoon

+1

你可以發佈someFunc()定義嗎? –

+0

@EudisDuran:這真的很長......不知道要發佈多少。請參閱編輯q – badperson

回答

0

過失,對我而言完全愚蠢的監督

if(s1.value = 'please select'){ 

應該

if(s1.value == 'please select'){ 

遺憾的愚蠢監督

0

我認爲這樣做是它發出的信息了(其實它提交)使精密組件着呢空白。 小費將

return false 

在您validateForm()如果你只是想填充一些div的和諸如此類的東西。如果你真的想它提交,那麼你可能想是這樣的:

$('form').submit(function(e) { 
    //Do your checks and innerHTML manipulation here before it sends the info away. 
}); 
0

而是採用由羅賓·瓊森你提到的回報應該使用preventDefault()以阻止提交表單,當你點擊提交。

+0

這就是'return false;'的確...... – Ian

+0

否 - 那是不正確的。返回false同時阻止默認()和stopPropagation() – awenkhh

+0

不,這是正確的。在jQuery事件處理程序中使用'return false;'是兩者都執行的唯一時間。在正常的Javascript事件處理程序中,'return false;'等於'event.preventDefault();' – Ian