2014-04-12 142 views
0

我在html中收集這個表單以收集macaddress,並且我想輸出(CompleteMacAddress)文本值中的所有輸入數據,如(10-20-30-40-50-60 )在一個隱藏文本輸入中收集多個輸入

任何幫助的JavaScript或jQuery的?

<form name="form1" action="" method="get"> 
    <input name="MacAddressPart1" type="text" id="MacAddressPart1" size="2" maxlength="2" > 
    <input name="MacAddressPart2" type="text" id="MacAddressPart2" size="2" maxlength="2"> 
    <input name="MacAddressPart3" type="text" id="MacAddressPart3" size="2" maxlength="2"> 
    <input name="MacAddressPart4" type="text" id="MacAddressPart4" size="2" maxlength="2"> 
    <input name="MacAddressPart5" type="text" id="MacAddressPart5" size="2" maxlength="2"> 
    <input name="MacAddressPart6" type="text" id="MacAddressPart6" size="2" maxlength="2"> 

    <input type="hidden" name="CompleteMacAddress" value=""> 

+1

'Java'!='JavaScript'。如果您不確定要選擇哪一個,請閱讀您正在使用的標籤的說明。 – Pshemo

回答

4

這應該工作正常:

$(function() { 
    var macSelector = "input[name^='MacAddressPart']"; 
    $(macSelector).bind('keyup', function() { 
     var macs = $.map($(macSelector), function(input) { return $(input).val(); }) 
     $('input[name="CompleteMacAddress"]').val(macs.join("-")) 
    }); 
}); 

看到它的效果,enter link description here。請注意,隨着用戶輸入,它會更新;)

+1

它不會和其他輸入元素一起玩。它更好地使用選擇器中的真正的ID /類。 –

+1

我知道。因爲他不是第一次使用課程(在他原來的例子中),那是我的第一個解決方案。作者可以調整它以使用更合適的選擇器,當然。我強烈建議他改變我的例子,使之更加精確。 – leandroico

+0

這是什麼原因downvote這個解決方案,順便說一句?還是僅僅是一個簡單的破壞,爲了讓你的光芒更加明亮? – leandroico

1

給你所有的HTML元素正確編號(包括形式和隱藏輸入)。

$("#formID").submit(function(event) { 
    $("#hiddenID").value(
    $("#MacAddressPart1").val('00')+"-"+ 
    $("#MacAddressPart2").val('00')+"-"+ 
    $("#MacAddressPart3").val('00')+"-"+ 
    $("#MacAddressPart4").val('00')+"-"+ 
    $("#MacAddressPart5").val('00')+"-"+ 
    $("#MacAddressPart6").val('00') 
); 
}); 

'00'將導致其默認爲00-00-00-00-00-00櫃面有沒有價值。

+0

這不是最佳方式。 –

+0

因爲?它比其他提議的解決方案更可讀。 –

+0

它是可讀的,但如果更改了一個名稱,代碼將不起作用。 –

0

只要使用一個文本字段輸入整個mac並在更改時驗證長度和字符會更容易。無論如何,你可以用基本的javascript - > document.getElementById('MacAddressPart6')。value和其他字符串值得到一個單獨的輸入值,然後使用getElementById('aaa')=

0

這是您要查找的內容嗎?

$('[name="form1"]').submit(function() { 
    $('[name="CompleteMacAddress"]').val(
     $('[name="MacAddressPart1"]').val() + '-' + 
     $('[name="MacAddressPart2"]').val() + '-' + 
     $('[name="MacAddressPart3"]').val() + '-' + 
     $('[name="MacAddressPart4"]').val() + '-' + 
     $('[name="MacAddressPart5"]').val() + '-' + 
     $('[name="MacAddressPart6"]').val() 
    ); 
}); 

編輯:

$('[name="form1"]').submit(function() { 
    $('[name="CompleteMacAddress"]').val($('input[id^="MacAddressPart"]').map(
     function() { return this.value || '00'; }).get().join('-')); 
}); 
+0

這不是最佳方式。 –

+0

而你最好的意思是......? – ThatWeirdo

+0

如果任何名字偶然發生變化,代碼就不能工作。相反,你可以做得更乾淨,就像@Leandro回答。 –

0

的jsfiddle實施例:

http://jsfiddle.net/pdLh8/3/

檢測KEYUP +更新輸入:

 $(document).ready(function() { 
    $('input[id^="MacAddressPart"]').keyup(
    function() { 
     var mac = []; 
     $('input[id^="MacAddressPart"]').each(function (index) { 
      mac.push($(this).val()); 
     }); 
     $("input[name='CompleteMacAddress']").val(mac.join('-')); 
    }); 
}); 
相關問題