Javascript jQuery&;处理元素ID';s
我有以下代码:Javascript jQuery&;处理元素ID';s,javascript,jquery,Javascript,Jquery,我有以下代码: function mandatoryField(manF) { var fieldId = $(manF).val(); if(fieldId == "") { return false; } else { return true; } } 它不起作用,但它可以: function man
function mandatoryField(manF)
{
var fieldId = $(manF).val();
if(fieldId == "")
{
return false;
}
else
{
return true;
}
}
它不起作用,但它可以:
function mandatoryField()
{
var fieldId = $("#element_1").val();
if(fieldId == "")
{
return false;
}
else
{
return true;
}
}
假设,在我的第一个示例中,mandatoryField被称为:
mandatoryField("#element_1")
当我尝试用变量替换绝对元素ID名称时,为什么它不起作用
编辑:
最新代码-非工作:
function isAmExSelected()
{
return $("#creditCardType").val() == "American Express";
}
function containsOnlyDigits(str)
{
return str.match(/[^0-9]/) == null;
}
function validateCCNumber()
{
var ccn = $("#creditCardNumber").val();
var onlyDigits = containsOnlyDigits(ccn);
if(isAmExSelected())
{
return ccn.length == 15 && onlyDigits;
}
else
{
return ccn.length == 16 && onlyDigits;
}
}
function mandatoryField(manF)
{
var fieldId = $("#" + manF).val();
return fieldId != "";
}
function registerValidation(id, validateMethod(), errorMethod)
{
$(id).change(function(){
if(validateMethod() == false)
{
errorMethod();
}
});
}
$(document).ready(function(){
registerValidation("#creditCardNumber", validateCCNumber, function(){alert("Invalid Credit Card Number!")});
$('input[type=text][class=mandatory]').blur(function(){
if (mandatoryField(this.id)) {
alert('Field:' + this.id + ' is mandatory!')
}
});
});
编辑2
我把整件事改写成这样:
$('input[type=text][class=mandatory]').blur(function(){
if (!($("#" + this.id).val().length)) {
alert('Field:' + this.id + ' is mandatory!');
}
});
function mandatoryField(manF){
return $(manF).val().length;
}
如果强制类的文本输入模糊,则运行函数:如果#foo.val()没有长度(即其中没有文本),则运行警报。我相信它应该能工作,但它不能。好的,这不起作用,因为jquery将假定manF是一个DOM对象,而您正在传递字符串 你试过吗
var tr = $('#element1') //----------1
alert($(tr).val()) //------------2
tr实际上是一个dom对象
更新::
你为什么不试试这个
//some code on some event
if(!check_mandatory())
//do something else
else do another thing
//some code on some event
以及功能
function check_mandatory()
{
$('.mandatory').each(function{
if($(this).val() == ""){
alert($(this).attr("name") + "required");
//or you can use id or any attrib
return false;
}
})
}
注意未经测试的代码可能无法工作,如果无法工作,请告诉我尝试以下方法:
function mandatoryField(manF)
{
if($('#' + manF).val() == "")
{
return false;
}
else
{
return true;
}
}
mandatoryField("element_1");
但这将得到元素的值,而不是id。我不确定您想要实现什么
场模糊触发选项:
$('input[type=text][class=classForMandatoryFields]').blur(function(){
if (mandatoryField(this.id)) {
alert('Field:' + this.id + ' is mandatory!')
}
});
将代码更新为:
function mandatoryField(manF)
{
var fieldId = $("#" + manF).val();
if(fieldId == "")
{
return false;
}
else
{
return true;
}
}
然后再试一次。您能试试:
var fieldId = manF.val();
mandatoryField($("element_1"));
无论选择器是作为参数传入,还是作为文本直接提供给
$
,这两段代码的工作方式都应该相同。另外,您可以执行以下操作,而不是使用if..else
function mandatoryField(manF) {
var fieldId = $(manF).val();
return fieldId != "";
}
除了选择器问题外,您还可以像这样重写函数:
$('input[type=text][class=mandatory]').blur(function(){
if (!($("#" + this.id).val().length)) {
alert('Field:' + this.id + ' is mandatory!');
}
});
function mandatoryField(manF){
return $(manF).val().length;
}
这是因为在JavaScript中,所有内容都有真假含义。对于数字,0为假
编辑:
我的测试很好:
function mandatoryField(manF){
return $(manF).val().length;
}
(...)
<input id="test" value=""/>
<input type="button" value="dd" onClick="alert('length: ' + (mandatoryField('#test'))"/>
功能命令字段(manF){
返回$(manF).val().length;
}
(...)
我认为变量可能是字符串,但仍然有效?我该如何解决这个问题?@Andrei检查jao-answer或Marek'answer,确定它一定能工作。我正在测试输入类型=名为#element_1的文本元素是否键入了内容。我已经编辑了脚本,它应该能工作。试试看,让我知道。此外,如果您提供更多信息,我们可以使此过程更简单、更快,例如在表单提交或实地休假事件(模糊)中检查。更多信息可以在这里找到:你最新的编辑仍然不起作用,我已经用我最新的代码更新了我的问题。请检查这个例子:你的函数在那里起作用。让我问一个愚蠢的问题:您是否将jQuery包含到您的站点中了?;)这与我在问题中描述的方式不同。也许你可以为你的示例创建一个。你不需要强制传递强制字段名