2014-09-13 85 views
2

我有一個HTML表單,它爲一些元素使用數組名稱,這樣我就可以在PHP中輕鬆讀取值,而不管最終有多少元素。例如:使用jQuery從HTML元素名稱獲取密鑰

<select name="brand[1]">...</select> 

在這些元素的jQuery.change()事件中,我想找出關鍵字是什麼,即本例中的'1'。很明顯,我可以分開名稱屬性,看看我留下了什麼,但有沒有更正確的方法?我覺得應該有,但我似乎無法找到一個整潔的解決方案。

謝謝。

+2

'.match(/ \ [(\ d +)\] /)[1]'應該這樣做。 – 2014-09-13 15:03:46

回答

0
$('select').change(function(){ 
    var name = $(this).attr('name'), 
    var key = name.match(/\[(\d+)\]/)[1]; 

    alert(key); 
}); 
+0

哦,我沒有想過使用正則表達式。似乎沒有工作得很好,儘管... .match()似乎只返回一個值,這也包含[和]部分。我也嘗試了/(\ [(\ d +)\])/和/ \ [([0-9] +)\] /但結果是一樣的 - [1]是不確定的。任何想法? – Ric 2014-09-13 15:45:35

+0

對不起,我使用'g'標誌搞砸了,我通過刪除回答更新了,現在應該可以工作了 – 2014-09-13 15:49:35

+0

啊,那有用,謝謝! 'm confused雖然... g修飾符不會阻止匹配在第一次發現後結束嗎?實際上現在我寫了,我認爲這是有道理的這要影響結果=)。我很快就會醒來! – Ric 2014-09-13 15:55:14

2

您可以添加一個html標籤來標識該關鍵字並在JQuery中獲取它。你會得到這樣的事情:

<select data-key="1" name="brand[1]">...</select> 

<script> 
$('select').change(function(){ 

    var theKey = $(this).data("key"); 
}); 
</script> 
+3

如果你打算使用自定義屬性,至少應該使用正確的'data-'。 – j08691 2014-09-13 15:07:17

+0

確實,更新了我的答案! – 2014-09-13 15:11:24

+0

這可能是我要得到的最簡單的答案,但不幸的是,我正在研究一個不是HTML5的較老的項目,並且自定義屬性會打破w3符合這個要求:-( – Ric 2014-09-13 15:46:37