验证方法对空字段和数字输入无效



我是Javascript的新手,已经收到了一些示例代码,要求我根据需求进行更改。我有一个检查空字符串的函数,还有一个检查是否满足空字符串条件的函数,以进一步检查输入是否为数字(电话号码(。

我面临的问题是,isNotEmpty函数似乎不适用于我的字段,对于isNumber函数,即使我将输入改回数字,我也总是会收到警报提示,无论我做什么,当我单击提交时,isNumber警报总是会出现。

我还有一个对象User,当我点击"提交"按钮后的表单"用户"按钮时,我正试图用它将我输入的值分配给这个用户对象,但我不知道如何进行。

请记住,我还是个新手,对替代代码和方法不是很熟悉,所以为了便于理解,我想知道为什么这些函数不能按预期工作。

我的JavaScript:

<script language="javascript">

function User(name,number,pastime){
this.name=name
this.number=number
this.pastime=pastime
}
var user = new User()
function isNotEmpty(field){
var inputStr = field.value
if (inputStr = "" || inputStr == null){
alert("An entry for this field is required.")
field.focus()
field.select()
return false
}
return true
}
function isNumber(field){
if (isNotEmpty(field)){
var inputStr = field.value
for(var i = 0; i<inputStr.length; i++){
var oneChar=inputStr.substring(i,i+1)
if (oneChar < "0" || oneChar > "9" || oneChar != "+"){
alert("Only numbers and area codes are allowed in this field.")
field.focus()
field.select()
return false
}
}
return true
}return false
}
function isOption(form){
var type = form.getElementByID("pastimetype")
var selectedValue = type.options[type.selectedIndex].value;
if(selectedValue == "selectpastime"){
alert("Please select a pastime.")
return false
}
return true
}   
function validate(form){
if(isNotEmpty(form.name) && isNumber(form.number) && isOption(form.pastime)){
return true
}
return false
}
function createUser(form) {
form.name.value=user.name
form.name.value=user.number
form.pastime.value=user.pasttime
}
</script>
</head>

我的HTML:

<body>
<form method="GET" action="http://www.it.murdoch.edu.au/cgi-bin/reply1.pl"
onSubmit="return validate(this)">
<p> Welcome! 
Please enter the following details:</p>
<p><label for="name"> Name: </label><br>
<input name="name" id="name" type="text" size="10" onChange="isNotEmpty(this)"></p>
<p><label for="number"> Number: </label><br> 
<input name="number" type="text" id="number" onChange="isNumber(this)"></p>  
<p><label for ="pastime"> Favourite pastime: </label>
<select name="pastime" select id="pastimetype">
<option value="selectpastime">---Please choose an option---</option>
<option value="surfingtheweb">Surfing the Web</option>
<option value="playingsport">Playing Sport</option>
<option value="listeingtomusic">Listening to Music</option>
<option value="watchingtv">Watching TV</option>
<option value="playinggames">Playing Games</option>
<option value="communityservice">Community Service</option>
<option value="daydreaming">Daydreaming</option>
<option value="reading">Reading</option>
<option value="meditation">Meditation</option>
</select></p>
<p>
<input type="submit">
<input type="button" value="user" onClick="createUser(this.form)">
</p>
</form>
</body>
</html>
isNumber函数中的

for(var i = 0; i<inputStr.length; i++){
var oneChar=inputStr.substring(i,i+1)
if (oneChar < "0" || oneChar > "9" || oneChar != "+"){
alert("Only numbers and area codes are allowed in this field.")
field.focus()
field.select()
return false
}
}

更换

var oneChar=inputStr.substring(i,i+1)

通过

var oneChar=inputStr.substring(i,1)

因为子字符串的签名函数是:子字符串(start_index,length_of_substring(。

试试这个,

for(var i = 0; i<inputStr.length; i++){
var oneChar=inputStr.substring(i,1)
if (isNan(parseInt(oneChar)) && oneChar != "+") {
alert("Only numbers and area codes are allowed in this field.")
field.focus()
field.select()
return false
}
}

相关内容

最新更新