2010-07-20 42 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.