2010-07-20 52 views
1

我有一对夫妇的日期时间选择器领域,如果其中任何一个为空我想要的提交按钮是不可见的。我知道如何做到这一点,但不知道如何使所有的日期时间选择器字段包含文本的按钮。隐藏按钮取决于文本框是否包含文本或不包含jQuery?

我见过使用KEYUP exmaples但是当我使用的日期时间选择器我从来不把我的光标在文本框中,并键入一些东西,日期时间选择器填充字段。

按钮与diidIOSaveItem结尾的名称。我不能在日期时间选择器中使用ID或名称。

if ($("input[title='Target Date']").val().length < 1) 
{ 
$("input[name$='diidIOSaveItem']").hide(); 
} 
else 
{ 
$("input[name$='diidIOSaveItem']").show(); 
} 

如果没有设定目标日期,则隐藏按钮。如果场地中有东西没有,我该如何显示按钮?

在此先感谢。

UPDATE

我知道有:

$("input[title='Start Date']").bind('keyup keydown change', function() { 
    if ($(this).val() == '') { 
    $("input[name$='diidIOSaveItem']").hide(); 
    } else { 
    $("input[name$='diidIOSaveItem']").show(); 
    } 
}).change(); 

$("input[title='Target Date']").bind('keyup keydown change', function() { 
    if ($(this).val() == '') { 
    $("input[name$='diidIOSaveItem']").hide(); 
    } else { 
    $("input[name$='diidIOSaveItem']").show(); 
    } 
}).change(); 

$("select[title='Strategic Objective']").bind('keyup keydown change', function() { 
    if ($(this).val() == 0) { 
    $("input[name$='diidIOSaveItem']").hide(); 
    } else { 
    $("input[name$='diidIOSaveItem']").show(); 
    } 
}).change(); 

$("select[title='Strategic Priority']").bind('keyup keydown change', function() { 
    if ($(this).val() == 0) { 
    $("input[name$='diidIOSaveItem']").hide(); 
    } else { 
    $("input[name$='diidIOSaveItem']").show(); 
    } 
}).change(); 

如果我没有在dropdownlists按钮被隐藏的一个选择任何内容。但是,如果我在下拉列表中选择了一些内容,即使日期时间选择器字段为空,该按钮也会变得可见。建议?

回答

0

如果你真的希望它是瞬间(任何条目使它显出它尽快消失,你清除输入输出)我跟这样的:

$.fn.extend({ 
    vals: function() { 
    var retVals = []; 

    this.each(function() { 
     retVals.push($(this).val()) 
    }); 

    return retVals; 
    } 
}); 

var myInputs = "input[title='Target Date'], input[title='Start Date'], select[title='Strategic Objective']"; 

$(myInputs).bind('keyup keydown change', function() { 
    var entries = $(myInputs).vals(); 

    for (i in entries) { 
    if (entries[i] == '') { 
     $("input[name$='diidIOSaveItem']").hide(); 
     return; 
    } 
    } 

    $("input[name$='diidIOSaveItem']").show(); 
}).change(); 

与更新的例子,你可以使用vals()获取所有输入值的数组。为了使它与选择元素一起工作,您需要第一个选项如下所示:<option value=''> </option>。我认为这应该非常接近。

+0

嗨g.d.d.c, 感谢您的。但是,当页面第一次加载时,它不会隐藏按钮,只有当我在该字段中输入某些内容然后将其删除。如果我有: 如果($( “输入[标题= '目标日期']”)== ''){ $ ( “输入[名称$ = 'diidIOSaveItem']”)隐藏(); } $( “输入[标题= '目标日期']”)。绑定( 'KEYUP KEYDOWN变化',函数(){ 如果($(本).VAL()== ''){$ (“input [name $ ='diidIOSaveItem']”)。hide(); } else { });(“input [name $ ='diidIOSaveItem']”).show(); } }); 它确实,但我能以更好的方式做到这一点吗?谢谢。 – peter 2010-07-20 02:05:50

+0

@peter - 如果你已经得到了整个事情在'$()'外壳,所以你要绑定的页面呈现后,你可以做到这一点通过触发约束的事件之一后,你将它绑定。我更新了这个例子。 – 2010-07-20 02:07:54

+0

谢谢,非常感谢 – peter 2010-07-20 02:46:58

0

对于更改字段本身,你可以随时收听事件:

$("input[title='Target Date']").bind('change keyup',function(){ 
    $("input[name$='diidIOSaveItem']").toggle($(this).val()!=''); 
}); 

对于设置到字段值,触发对inputchange()。例如。

$("#setvalue").click(function(){ 
    $("input[title='Target Date']").val("hello"); // Set a value 
    $("input[title='Target Date']").change(); // Force the change event 
}); 

Code in action.