2013-02-05 60 views
0

我正在爲表單中的所有輸入字段創建一個字符計數器。這是我的腳本,當我專注於輸入字段,當我離開它,當我完成按一個鍵:處理很多ID

$(document).ready(function() { 
    $("#in1").keyup(function() { 
     $("#count1").text(50 - this.value.length); 
    }); 
    $("#in1").focus(function() { 
     $("#countainer1").show(); 
     $("#count1").text(50 - this.value.length); 
    }); 
    $("#in1").blur(function() { 
     $("#countainer1").hide(); 
    }); 
}); 

你可以看到它在這裏工作: http://jsfiddle.net/UQFD6/12/

的問題是:

我是否必須爲每個ID生成腳本?

我的意思是,該代碼將是相同的,但施加到不同的ID:#input1顯示#countainer1並修改#count1,然後用#countainer2#count2#input2,等等。

我想用類,而不是IDS,但是當它顯示了容器,它將顯示類的每個容器,而不是隻有一個,我以書面領域。

回答

0

我會建議這樣:

$(document).ready(function() { 
    $('input[id^=in]').each(function(){ // all inputs whose id starts with "in" 
     var i = this.id.slice(2); // finds "32" from "in32" 
     $(this).keyup(function() { 
      $("#count"+i).text(50 - this.value.length); 
     }).focus(function() { // let's chain 
      $("#countainer"+i).show(); 
      $("#count"+i).text(50 - this.value.length); 
     }).blur(function() { 
      $("#countainer"+i).hide(); 
     }); 
    }); 
}); 
+0

這或多或少是我想做的事,但我不知道怎麼辦。我會嘗試一下,謝謝! – gonfer

+0

我看到你刪除了你的消息,但我仍然回答你: 不,不要誤會我的意思,我不是說我不喜歡你的代碼或任何東西,只是我不知道是什麼「例如,「keyup」或「[id^= in]」。我是JQuery和Javacript的新手。謝謝! – gonfer

+0

[「開始於」選擇器](http://api.jquery.com/attribute-starts-with-selector/)。 'keyup'在你的代碼中,我沒有添加它。 –

1

不,您可以使用類而不是#in1,例如在類中添加到元素,你現在給ID IN1平方英寸

$(".in").keyup(function() { 

您可以使用屬性,例如您需要選擇與您當前的#in1相關聯的元素,例如data-id=1

var id = $(this).data('id'); 
$(".count[id='" + id + "']").text(...); 
+0

對於'data-'屬性+1。 –

+0

我會嘗試一下Eric,如果我能開始工作,我會更新我的帖子。謝謝! – gonfer

0

您可以使用類,而不是嘗試:

$(document).ready(function() { 
    $(".in").keyup(function() { 
     $(this).siblings(".count").text(50 - this.value.length); 
    }).focus(function() { 
     $(".countainer").show(); 
     $(this).siblings(".count").text(50 - this.value.length); 
    }).blur(function() { 
     $(this).siblings(".countainer").hide(); 
    }); 
}); 
+0

我不知道兄弟姐妹是怎麼做的,但我會發現!謝謝! – gonfer

+0

'.siblings()'用於在同一級別找到元素,就像你的情況一樣,你有'input',然後在它下面顯示文本的div。 – Jai