2012-08-03 80 views
0

我正在重新發布此信息,以便在我的問題中更具體。我試圖結合在這裏找到的計算器:http://www.nhpta.com/over-tax-calculator.html確定輸入字段是否有價值的方法

我希望計算按鈕足夠聰明,以便知道兩個輸入字段中是否有輸入值,然後執行兩個JS函數之一Calculate或Calculate2。如果兩個字段都輸入了值,我想它會拋出一個錯誤代替按鈕。這是我下面的概念代碼,我不知道如何定義php變量,也不知道如何告訴它查看每個輸入字段並確定是否輸入了值。還不確定打印是否正確?

<?php 
    $input_B = "form field named input_B"; 
    $input_C = "form field named input_C"; 

    if($input_B == 'has a value' && $input_C == 'has no value') 
    { 
     print ' <P><INPUT TYPE="button" VALUE="Calculate" name="AddButton" onClick="Calculate(this.form.input_A.value, this.form.input_B.value, this.form.input_C.value, this.form)"></P>'; 
    } 
    elseif($input_C == 'has a value' && input_B == 'has no value') 
    { 
     print ' <P><INPUT TYPE="button" VALUE="Calculate" name="AddButton" onClick="Calculate2(this.form.input_D.value, this.form.input_E.value, this.form.input_F.value, this.form)"></P>'; 
    } 
    elseif ($input_C == 'has a value' && input_B == 'has a value') 
    { 
     print ' Please choose only one field to fill in'; 
    } 
    else 
    { 
     print ' <P><INPUT TYPE="button" VALUE="Calculate" name="AddButton" onClick="Calculate(this.form.input_A.value, this.form.input_B.value, this.form.input_C.value, this.form)"></P>'; 
    } // End if/else if 
?> 
+3

這應該在JavaScript中完成,**不** PHP。 – Matt 2012-08-03 13:57:59

+0

@Matt如果JavaScript被禁用,該怎麼辦?或者用戶用像螢火蟲這樣的東西來改變這些值? – Bono 2012-08-03 16:43:13

+0

@Bono然後用戶是一個混蛋。 :-P – Matt 2012-08-03 16:44:59

回答

0

第一,如果statment應該改寫這樣的:(!唯一的)

if(($input_B != "") && ($input_C == "")) 

然後邏輯是別人

+1

實際上,他不應該這樣做在PHP中。 – SomeKittens 2012-08-03 14:02:40

+0

是的,它不是最好的做法,但它仍然回答 – mlishn 2012-08-03 14:04:29

+0

@SomeKittens我很確定OP(勞倫)是一個「她」:-P – Matt 2012-08-03 14:08:29

0

只要兩個輸入字段具有相同的ID ,你可以這樣做:

var field0 = document.getElementById("field0id").value; 
var field1 = document.getElementById("field1id").value; 
if(field0 === ""){ 
    if(field1 !== ""){ 
     calculate(); 
    }else{ 
     //error 
    } 
}elseif(field1 === ""){ 
    calculate2(); 
}else{ 
    //error 
} 
0

首先,你不應該需要做任何事情server-sid e爲此(這是PHP運行的地方)。而是使用javascript。它應該是這個樣子:(請記住,這是使用jQuery,這是一個JavaScript庫,您可以瞭解jQuery的here。)

<label for="input1">Input 1</label> 
<input type="text" name="input1" id="input1" /><br /> 
<label for="input2">Input 2</label> 
<input type="text" name="input2" id="input2" /><br /> 
<input type="submit" value="Submit" id="submit" onclick="calculate();" <!-- you only need the onclick attribute if you're not using jQuery --> /> 

編輯:修改函數來執行邏輯中定義問題

<!-- pseudo-code with jQuery --> 
<script language="javascript" type="text/javascript"> 
    $("#submit").on('click', function() { 
     var input1Val = $("#input1").val(); 
     var input2Val = $("#input2").val(); 

     if (input1Val != "" && input2Val != "") { 
      alert("You may only enter a value in one input field."); 
     } else if (input1Val != "") { 
      calcFunc1(input1Val); 
     } else if (input2Val != "") { 
      calcFunc2(input2Val); 
     } else { 
      alert("You must enter a value in one of the input fields."); 
     } 
    }); 
</script> 

<!-- pseudo-code with straight javascript --> 
<script language="javascript" type="text/javascript"> 
    function calculate() { 
     var input1Val = document.getElementById("input1").value; 
     var input2Val = document.getElementById("input1").value; 

     if (input1Val != "" && input2Val != "") { 
      alert("You may only enter a value in one input field."); 
     } else if (input1Val != "") { 
      calcFunc1(input1Val); 
     } else if (input2Val != "") { 
      calcFunc2(input2Val); 
     } else { 
      alert("You must enter a value in one of the input fields."); 
     } 
    } 
</script> 
+0

好的,@Matt,我想這樣做的「正確」的方式,並使用JavaScript而不是PHP,如果這是正確的。以下是我目前使用的計算腳本:function Calculate(Atext,Btext,Ctext,form) var A = parseFloat(Atext); var B = parseFloat(Btext); var C = parseFloat(Ctext); form.Answer.value =((B-A)* C)/ 1000; } function Calculate2(Atext,Ctext,Dtext,form) var C = parseFloat(Ctext); var A = parseFloat(Atext); var D = parseFloat(Dtext); form.Answer.value = D - ((A * C)/ 1000); } – Lauren 2012-08-03 16:26:38

+0

@Lauren作爲評論很難讀懂。我會把它移到你的問題上。 – Matt 2012-08-03 16:32:25

+0

我甚至無法弄清楚如何正確評論...... grrrr。無論如何,我是否應該將上面的註釋集成到我的腳本中,而不是有兩個計算函數,但是有一個計算函數根據輸入是否有值來選擇兩個操作之一? – Lauren 2012-08-03 16:32:25

相關問題