【发布时间】:2014-02-12 17:48:07
【问题描述】:
当用户在素材字段中输入信息时,我正在尝试获取一个表单来自动填写输入,然后应该将这些信息插入到带有 JQuery 的方程中,然后答案应该在 postQuantity 中输出。由于用户可以添加输入,因此表单设置为每个素材都应带有相应的 postQuantity,该 postQuantity 由其后缀编号表示。因此,应该使用 Footage2 来查找 postQuantity2 和 3 for 3,依此类推。问题是只有第一个字段会自动填充,并且任何时候更改不同的素材类别都不会发生任何事情。任何关于我哪里出错的见解以及如何解决它的建议将不胜感激!谢谢!这是一个 JSFiddle - http://jsfiddle.net/gv0029/TwH5n/
HTML:
<form>
<fieldset id="fence">
<div class="inputFence">
<fieldset class="fenceDescripton">
<legend><strong>Fence Description</strong></legend>
<label>Footage<input name="footage_1" class="footage" /></label>
<select name="fenceHeight_1" class="fenceHeight">
<!--got rid of "select" from the value. not needed at all-->
<option value="">Select Fence Height</option>
<!--got rid of the ids completely. the numbers from the values are all you need-->
<option value="6">6 Ft.</option>
<option value="8">8 Ft.</option>
</select>
</fieldset>
<fieldset class="post">
<legend><strong>Post Type</strong>
</legend>
<label>Post Quantity:
<input type="postQuantity" name="postQuantity_1" class="postQuantity" value="" />
</label>
<select name="postMeasurements_1" class="postMeasurements">
<option value="">Select Post Measurements</option>
<option value="23/8 x .065 x 8">2 3/8 x .065 x 8</option>
<option value="23/8 x .095 x 8">23/8 x .095 x 8</option>
</select>
</fieldset>
</div>
</fieldset>
<div>
<input type="button" id="btnAddFence" value="Add Another Fence" />
<input type="button" id="btnDelFence" value="Remove Fence" />
</div>
</form>
JS:
//Quantity for Posts
$("[class^='footage']").bind('keypress keydown keyup change', function(){
var footage = parseFloat($(this).val(),10);
var total = '';
var parts = $(this).attr('name').split("_");
var fenceNumber = parts[1];
if(!isNaN(footage)){
total = Math.ceil(footage /7);
$(":input[name='postQuantity_" + fenceNumber + "'" + ']').val(total.toString());
} else {
$(":input[name='postQuantity_" + fenceNumber + "'" + ']').val("");
}
});
//Dynamic Fence Input Fields
$('#btnAddFence').click(function () {
// create the new element via clone()
var newElem = $('.inputFence:last').clone();
// insert the new element after the last "duplicable" input field
$('.inputFence:last').after(newElem);
// enable the "remove" button
$('#btnDelFence').removeAttr('disabled');
//get the input name and split into array (assuming your clone is always last)
var parts = $('.fenceHeight:last').attr('name').split("_");
//change the second element of the array to be one higher
parts[1]++;
//join back into a string and apply to the new element
$('.fenceHeight:last').attr('name', parts.join("_"));
//do the same for other two inputs
parts = $('.postQuantity:last').attr('name').split("_");
parts[1]++;
$('.postQuantity:last').attr('name', parts.join("_"));
parts = $('.postMeasurements:last').attr('name').split("_");
parts[1]++;
$('.postMeasurements:last').attr('name', parts.join("_"));
parts = $('.footage:last').attr('name').split("_");
parts[1]++;
$('.footage:last').attr('name', parts.join("_"));
// business rule: you can only add 5 names
//if (newNum == 5)
//$('#btnAdd').attr('disabled','disabled');
});
$('#btnDelFence').click(function () {
//remove the last inputFence
$('.inputFence:last').remove();
// if only one element remains, disable the "remove" button
if ($('.inputFence').length == 1) $('#btnDelFence').attr('disabled', 'disabled');
});
$('#btnDelFence').attr('disabled', 'disabled');
【问题讨论】:
-
您要调试哪个事件?按键输入?无论我在小提琴中做什么,我都看不到屏幕上的变化。我在 jsfiddle 的控制台中看到错误:意外字符串。可能有语法错误
-
所有事件哈哈。它唯一有效的时间是第一组输入。之后,当您输入新的素材输入时,什么也不会发生。在第 2 行的 JS 中,我使用 (event.trigger) 而不是 $(this) 但后来由于某种原因制作了 NAN 素材。但是当我看到控制台说“ $(”:input[name='postQuantity_" + fenceNumber + "'" + ']').val(total.toString());" 之后缺少一个 ')' .所以我认为这是一个语法错误,但没有看到。
-
该死,这是我要给的 jsfiddle,我很抱歉 - jsfiddle.net/gv0029/TwH5n/1
-
你的问题在这里:$('event.trigger').val()
-
引号。它是一个对象,而不是选择器字符串。
标签: javascript jquery forms autocomplete