验证表单时,Javascript函数运行两次

时间:2017-03-25 14:34:32

标签: javascript html

我确定必须有一个简单的解释。我试图收到提醒,必须选择国家'只要选项“未选择”即可显示已选中(我相信默认选中),然后单击验证按钮。我已经能够正常显示警报功能,但问题是警报显示两次。

为什么警报会显示两次,如何让它只显示一次?谢谢!



function CountrySelectValidation() { // ensures country is selected
	var ValidateCountry = document.forms["registration-form"]["Country"].value;
	if (ValidateCountry == "not-selected") {
		alert("Country must be selected");
		return false;
	} else {
		return true;
	}
}

function SubmitForm() {
    if (CountrySelectValidation()) {
        // check if true, then execute this code
        document.getElementById("registration-form").submit();	
    }
}

<form id="registration-form">
    What country are you from?
    <select name="Country">
		<option value="not-selected">Not Selected</option>
		<option value="england">England</option>
		<option value="wales">Wales</option>
		<option value="scotland">Scotland</option>
		<option value="northern-ireland">Northern Ireland</option>
	</select>
    <br><br><input type="submit" value="Submit Method 1">
    <button type="reset">Reset Method 1</button>
    <button type="submit" id="submit-2">Submit Method 2</button>
</form>

<button onClick="ResetForm()">Reset Method 1</button>
<button onClick="CountrySelectValidation(); SubmitForm()">Validation</button>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:3)

CountrySelectValidation()
...
if (CountrySelectValidation())

你在CountrySelectValidation内运行if函数(它实际执行),这就是它运行两次的原因。

答案 1 :(得分:1)

当您调用if语句时,您正在再次执行该函数。在原始函数内部调用的另一个函数中运行if语句中的代码。

OriginalFunction () {

      //Content here

      FunctionToHandleIfstatement();

 }