jQuery未返回任何值
jQuery not returning any value
我有一些代码可以检查表单的内容是否有效。如果我注释掉checkFile函数,checkEmpty、checkNumeric和checkEmail都可以正常工作。但如果我包含checkFile,它会破坏代码,导致函数不返回任何值。
这是checkFile函数。它应该检查文件扩展名。
$.fn.checkFile = function(fileValue) {
//var fileName = contactform.cv.value;
var extension = fileValue.substring(fileValue.lastIndexOf('.') + 1);
alert(extension);
if(extension === 'jpg' || extension === 'jpeg' ||extension === 'docx' ||extension === 'pdf' ||extension === 'xlsx'){
alert("correct extension");
return true;
}else{
alert("incorrect extension");
return false;
}
};
此外,该功能应该可以正常工作。我分别试了试,看看它是否能正确地得到扩展。
这是整个代码,以防需要
$(window).load(function() {
// validations
$.fn.checkEmpty = function(emp) {
if(emp === ""){
alert("field is empty");
return false;
}else{
alert("not empty");
return true;
}
};
$.fn.checkEmail = function(email) {
var regex = new RegExp(/^(("['w-'s]+")|(['w-]+(?:'.['w-]+)*)|("['w-'s]+")(['w-]+(?:'.['w-]+)*))(@((?:['w-]+'.)*'w['w-]{0,66})'.([a-z]{2,6}(?:'.[a-z]{2})?)$)|(@'[?((25[0-5]'.|2[0-4][0-9]'.|1[0-9]{2}'.|[0-9]{1,2}'.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})'.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})']?$)/i);
if(regex.test(email)){
alert("mail is valid");
return true;
} else {
alert("mail is invalid");
return false;
}
};
$.fn.checkNumeric = function(value) {
// 10 digits for phone number ?
/*
if (value.length !== 10 || value === "" || !$.isNumeric(value)) {
alert("not a numerical value");
} else {
alert("numerical value");
}*/
var regex =new RegExp(/^(?:'d*','d*|'d+)$/);
if(regex.test(value) && value!==""){
alert("numerical value");
return true;
} else {
alert("not numerical value");
return false;
}
};
$.fn.checkFile = function(fileValue) {
//var fileName = contactform.cv.value;
var extension = fileValue.substring(fileValue.lastIndexOf('.') + 1);
alert(extension);
if(extension === 'jpg' || extension === 'jpeg' ||extension === 'docx' ||extension === 'pdf' ||extension === 'xlsx'){
alert("correct extension");
return true;
}else{
alert("incorrect extension");
return false;
}
};
$.fn.checkField = function() {
var empty = "empty";
var numeric = "numeric";
var email = "email";
var file = "file";
var flag=0;
var retval;
$("input:text").each(function() {
var required = $(this).data("reqs");
if(required.toLowerCase().indexOf(empty) !== -1){
retval = $(this).checkEmpty($(this).val());
if(retval === false){
flag++;
$(this).after('<span style="color:red">*</span>');
}
}
if (required.toLowerCase().indexOf(numeric) !== -1){
retval = $(this).checkNumeric($(this).val());
if(retval === false){
flag++;
$(this).after('<span style="color:red">*</span>');
}
}
if(required.toLowerCase().indexOf(email) !== -1){
retval = $(this).checkEmail($(this).val());
if(retval === false){
flag++;
$(this).after('<span style="color:red">*</span>');
}
}
});
$("input:file").each(function() {
if(required.toLowerCase().indexOf(file) !== -1){
retval = $(this).checkFile($(this).val());
if(retval === false){
flag++;
$(this).after('<span style="color:red">*</span>');
}
}
});
alert(flag);
return (flag > 0) ? false : true;
};
});
谢谢你的帮助。
正如Bergi所指出的,如果将文件名作为参数传递给原型,那么将函数添加到原型中没有多大意义。。。
然而,如果您在方法中实际使用this
,那么将其添加到原型中可能是一个好主意
$.fn.checkFile = function(){
var filename = $(this).val();
if (/(?:jpe?g|docx|pdf|xlsx)$/.test(filename)){
return true;
}else{
return false;
}
};
您可以在上测试此方法http://jsfiddle.net/NVvzN/.请尝试从您的计算机中选择不同的文件,看看它是如何工作的。
附言:我的猜测是,如果你接受.docx和.xlsx,你也应该接受.doc和.xls;在这种情况下,正则表达式将是/(?:jpe?g|docx?|pdf|xlsx?)$/
相关文章:
- AJAX:$_GET不返回任何值
- WebKitBrowser.StringByEvaluatingJavaScriptFromString 不返回任何值
- Javascript函数不返回任何值
- 没有 NaN 的 x === x 返回 false 是否有任何值
- 在 nodeJs 中不返回任何值的 POST
- Ajax 注册不返回任何值或错误
- 整理代码:检查多个值,如果找到任何值,则返回null
- Javascript方法计算成本()不为我返回任何值
- .val,但不返回任何值[JQuery]
- Jquery文本框在asp.net中不返回任何值
- 如果未返回任何值,则保持货币格式的JQgrid单元格为空,不带默认值
- jQuery未返回任何值
- Javascript/Jquery-如何检查函数是否返回任何值
- 当regex匹配测试字符串时,Javascript .test要么不返回任何值,要么返回false
- Scraper不返回任何值与jquery使用cheerio
- getSelection在Chrome扩展中不返回任何值
- JQuery“contains"对HTML编码不返回任何值
- ExtJS Forms >.getFieldValues()函数没有返回“时间字段”的任何值;xtype
- 当包含h2,h3时,inner HTML不返回任何值
- 调用PHP不返回任何值