2012-11-29 89 views
1

如何可以爲所有文本框此功能工作時,我使用這個JavaScript如何工作?

$('#date, #date2').blur(function() {

但不是當我使用

$('#date').blur(function() {

MVC瀏覽器:

@Html.TextBoxFor(x => x.ArrivalDateStart, new { id = "date" }) 
@Html.TextBoxFor(x => x.ArrivalDateEnd, new { id = "date" }) 
@Html.TextBoxFor(x => x.OtherDateEnd, new { id = "date" }) 
@Html.TextBoxFor(x => x.OtherDateEnd, new { id = "date" }) 

的Javascript:

$(function() { 
    $('#date, #date2').blur(function() { 
     var date = $(this).val(); 
     var result = ""; 
     if (date.length === 8) { 
      result = result += date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8); 
      $(this).val(result); 
      $(this).blur() 
     } 
    }); 
}); 
+1

你有很多重複'id'屬性 - 這是無效的,而且是最有可能的原因奇怪的行爲。 –

+1

「id」意思是獨一無二的。如果不是,HTML/Javascript會做出意外/不可預測的事情。如果您有多個元素的共享參考,請使用「class」。 – SDC

+0

@SDC大多數情況下,事實上JQ優化器在檢測到它已被賦予單個ID來選擇時使用'querySelector'而不是'querySelectorAll'。 –

回答

11

你的要素可以有唯一的ID。把它轉換成一個類屬性,而不是一個ID屬性:

@Html.TextBoxFor(x => x.ArrivalDateStart, new { @class = "date" }) 

,並選擇它:

$('.date').blur(function() { 
0

首先的ID必須是一個元素獨特的,所以你不能只給new { id = "date" }所有其中。但是,你可以給他們相同的類名,如new { @class = "date" },當你將選擇器更改爲「.date」時,它應該做到這一點。

0

您不能擁有超過1個元素的相同ID! 如果設置像DATE1,DATE2,DATE3的ID,...你可以做出這樣一個選擇:

$('textarea[id^="date"]') 
相關問題