iT邦幫忙

0

JS input陣列的index抓取

我有多個name=dt_qty[]的input陣列
我再改變值的時候想去抓正在改變得這個陣列的index

我不管改變哪個input的值 alert出來都是 0

我有參考過這篇文章可是一樣沒辦法
https://stackoverflow.com/questions/492833/getting-correct-index-from-input-array-in-jquery

<input type='text' name='dt_qty[]' onchange='updateSum($(this).index())' value='1'>
<input type='text' name='dt_qty[]' onchange='updateSum($(this).index())' value='2'>
<input type='text' name='dt_qty[]' onchange='updateSum($(this).index())' value='3'>
<input type='text' name='dt_qty[]' onchange='updateSum($(this).index())' value='4'>

<script>
function updateSum(index){
    alert(index);
}
</script>
建立不要把event寫在html上,這種做法已經作古了~
我測試大大的程式,結果是正確的。
柯柯 iT邦新手 3 級 ‧ 2018-06-27 15:01:47 檢舉
@fysh711426 因為我少判斷表格的關係 我每個input是用表格分開 所以會變成index 都是0 後來才發現是表格的關係 有改寫法
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
暐翰
iT邦大師 1 級 ‧ 2018-06-21 14:44:01
最佳解答

改成下面這樣就可以

<input type='text' name='dt_qty[]' onchange='updateSum(this)' value='1'>
<input type='text' name='dt_qty[]' onchange='updateSum(this)' value='2'>
<input type='text' name='dt_qty[]' onchange='updateSum(this)' value='3'>
<input type='text' name='dt_qty[]' onchange='updateSum(this)' value='4'>

<script>
function updateSum(e){
    alert($(e).index());
}
</script>

線上測試連結

看更多先前的回應...收起先前的回應...
柯柯 iT邦新手 3 級 ‧ 2018-06-21 14:54:06 檢舉

如果 input用成JS動態產生也能有一樣的效果嗎

暐翰 iT邦大師 1 級 ‧ 2018-06-21 14:55:25 檢舉

對 一樣有效果

柯柯 iT邦新手 3 級 ‧ 2018-06-21 14:56:43 檢舉

好的 我試試看 感謝

柯柯 iT邦新手 3 級 ‧ 2018-06-22 09:26:29 檢舉

我想再問一下 如果我有加表格的話 是不是抓不到index

如果要用表格的話 要怎去抓他的index?

<table>
    <tr>
      <td><input type='text' name='dt_qty[]'></td>
    </tr>
    <tr>
      <td><input type='text' name='dt_qty[]'></td>
    </tr>
    <tr>
      <td><input type='text' name='dt_qty[]'></td>
    </tr>
    <tr>
      <td><input type='text' name='dt_qty[]'></td>
    </tr>
</table>

<script>
$('input[name="dt_qty[]"]').change(function(){
  alert($(this).index());
});
</script>

輸出的index都是0

Homura iT邦高手 1 級 ‧ 2018-06-22 11:38:21 檢舉

stytle704726
因為被table包住變成在不同區塊了
剛試了一下可以改成取tr的index
$($(this)[0].parentNode.parentNode).index()

暐翰 iT邦大師 1 級 ‧ 2018-06-22 11:44:16 檢舉

我要發表回答

立即登入回答