限制元素追加的数量
Limit number of element appends Javascript
我有一段简单的代码,用于将额外的选择字段附加到表单中,用户可以根据需要添加更多字段。但是,我希望能够定义可以追加的输入元素的最大数量。我现在的代码是:
<script type="text/javascript">
var count = 0;
$(function(){
$('p#add_field').click(function(){
count += 1;
$('#container2').append(
'<strong>Golf Course ' + count + '</strong>   '
+'<select id="field_' + count + '" name="fields[]">' + "<?php foreach ( $courses as $course ) { $name = $course->coursename; ?>"+"<?php echo '<option value='''.htmlspecialchars($name).'''>'.$name.'</option>'; ?>"+"<?php } ?>"+'</select><br />')
});
});
</script>
<script type="text/javascript">
var count = 0;
var max = 5;
$(function(){
$('p#add_field').click(function(){
count += 1;
if(count >= max)
return;
$('#container2').append(
'<strong>Golf Course ' + count + '</strong>   '
+'<select id="field_' + count + '" name="fields[]">' + "<?php foreach ( $courses as $course ) { $name = $course->coursename; ?>"+"<?php echo '<option value='''.htmlspecialchars($name).'''>'.$name.'</option>'; ?>"+"<?php } ?>"+'</select><br />')
});
});
</script>
但是,你的代码还是很难维护——把PHP和JS分开。
编辑:也考虑这个解决方案:
// this way you provide a JSON serialization of your server data
<script type="application/json" id="select-data">
<?php echo json_encode($courses); ?>
</script>
// this is pure js: doesn't care where the data comes from
<script type="text/javascript">
$(function(){
// we parse the JSON string, and get a Javascript array
var selectData = $.parseJSON( $("#select-data").text() );
var count = 0;
var max = 5; // pick the number you want here
// we create a new select, based on the count parameter
function makeSelect(count){
var $select = $('<select>', { id : 'field_' + count, name : "fields[]" });
$.each(selectData, function(){
$select.append(
$('<option>', { value : this.name, text : this.name })
)
})
return $select;
}
$('p#add_field').click(function(){
count += 1;
if(count >= max)
return;
$('#container2').append($('<strong>', { text : "Golf Course " + count }));
$('#container2').append(makeSelect(count));
});
});
</script>
try this
<script type="text/javascript">
var count = 0;
var limit = 5;
$(function () {
$('p#add_field').click(function () {
count += 1;
if ($('#container2 select').length <= limit) {
$('#container2').append(
'<strong>Golf Course ' + count + '</strong>   '
+ '<select id="field_' + count + '" name="fields[]">' + "<?php foreach ( $courses as $course ) { $name = $course->coursename; ?>" + "<?php echo '<option value='''.htmlspecialchars($name).'''>'.$name.'</option>'; ?>" + "<?php } ?>" + '</select><br />')
}
else {
alert('Limit Exceed');
}
});
});
</script>
相关文章:
- jQuery追加x元素的列表
- jquery追加元素位置始终为0
- 如何将动态追加元素的多个值存储到单个 var 中,然后检索到函数中
- 仅追加元素一次
- Masonry v3 在追加元素时是否仍然支持飞入过渡
- JQuery 复制/追加元素,删除了基本对象
- 追加元素,获取追加两次
- 追加元素AFTER加载
- 为什么在重新追加元素时单击事件不起作用
- jquery / 在达到最大追加数后自动删除追加元素
- D3只在元素不存在时追加元素
- 如何使用Jquery或Javascript瞄准追加元素,或者如何将追加元素添加到DOM中
- 在angular.js中通过作用域变量显示或追加元素
- 追加元素的最大数量
- 如何借助该事件处理程序创建的元素在事件处理程序之外动态追加元素?
- 如何多次追加元素(向下滑动)
- 使用$()追加元素的问题
- 如果有人在jquery或js中选择了一个特定的选项值,如何触发追加元素
- 当追加元素到
- 移除和追加元素后无法识别全局变量