gpt4 book ai didi

javascript - jQuery 不返回任何值

转载 作者:行者123 更新时间:2023-11-28 09:04:30 25 4
gpt4 key购买 nike

我有一些代码可以检查表单内容是否有效。如果我注释掉 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 指出的那样,如果将文件名作为参数传递给函数,那么将函数添加到原型(prototype)中并没有多大意义......

但是,如果您实际上在方法中使用 this,将其添加到原型(prototype)中可能是一个好主意:

$.fn.checkFile = function(){
var filename = $(this).val();
if (/(?:jpe?g|docx|pdf|xlsx)$/.test(filename)){
return true;
}else{
return false;
}
};

您可以在 http://jsfiddle.net/NVvzN/ 测试此方法。尝试从您的计算机中选择不同的文件,看看它是如何工作的。

<小时/>

PS:我的猜测是,如果您接受.docx和.xlsx,您也应该接受.doc和.xls;在这种情况下,正则表达式将为 /(?:jpe?g|docx?|pdf|xlsx?)$/

关于javascript - jQuery 不返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17317937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com