jQuery .click .appendTo 不加载其他 javascript
jQuery .click .appendTo not loading other javascript
>很难解释正在发生的事情,所以我会尽我所能。我有一个简单的jQuery脚本,当您选择"添加"按钮时,它会添加另一行输入框,因此如果用户想继续添加日期,他们可以或只是接受并继续。这部分工作正常,如下文在我的小提琴上看到的。 但是,当用户单击"添加"时,它将添加一个选择下拉列表和一个输入框,这些输入框也有来自pickadate的js.js以选择它们的日期。每当您选择"添加"选项以添加更多行时,它似乎没有加载任何 js,因为输入框完全空白,既没有保存类本身,也没有保存它应该保存的 js。此外,它没有在我的服务器端正确保存,就像它在两端都忽略了它一样。这是它在Firebug https://i.stack.imgur.com/ncxwG.png 上显示的图像
JSFIDDLE 脚本:
http://jsfiddle.net/q3jrU/
完整的JS代码:
<script>
$(document).ready(function(){
$('.datepicker').pickadate({
monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
disable: [
1
],
min: new Date("today"),
today: '',
clear: ''
});
var i = $('input').size() + 1;
$('#add').click(function() {
$('<div><select name="office" id="office"><option value="test">Select Office </option></select> {{ Form::text('date[]', Input::old('date[]'), array('class' => 'datepicker', 'placeholder' => 'Select a date')) }}</div>').fadeIn('medium').appendTo('.inputs');
i++;
});
$('#remove').click(function() {
if(i > 1) {
$('.datepicker:last').remove();
i--;
}
});
});
</script>
仅供参考,脚本位于页面本身的底部。服务器端是 laravel 4。如何让我的 js 正确读取?
当你调用 .pickadate()
时,你告诉它将该插件添加到所有现有的匹配元素中(在这种情况下,任何具有类 datepicker
的现有元素)。但是当你调用.pickadate()
时,那些动态添加的字段并不存在。
因此,在创建它们之后,您还需要对它们调用.pickadate()
。我会做这样的事情:
$(document).ready(function(){
var pickadateOptions = {
monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
disable: [
1
],
min: new Date("today"),
today: '',
clear: ''
};
// get all existing elements with the 'datepicker' class and apply the plugin
$('.datepicker').pickadate(pickadateOptions);
var i = $('input').size() + 1;
$('#add').click(function() {
$('<div><select name="office" id="office"><option value="test">Select Office </option></select> {{ Form::text('date[]', Input::old('date[]'), array('class' => 'datepicker', 'placeholder' => 'Select a date')) }}</div>')
.fadeIn('medium')
.appendTo('.inputs')
.find('input')
.pickadate(pickadateOptions); // apply the plugin to the new element
i++;
});
$('#remove').click(function() {
if(i > 1) {
$('.datepicker:last').remove();
i--;
}
});
});
此外,每个新创建的<select>
框将具有相同的名称和 ID,这是无效的。不过,文本输入看起来不错。
相关文章:
- Javascript阻止其他Javascript代码
- 在其他javascript框架模板中运行angular指令
- 如何使用javascript、jquery或其他javascript框架过滤数据
- Meteor:引用不同目录中的其他javascript类
- 如何使用其他 JavaScript 文件中的新类访问我的 createjs 导出的 js 文件
- 使用其他javascript文件nodejs和express发送和获取数据 socket.io
- 在WordPress上运行其他javascript之后再运行javascript
- 此JavaScript函数可以单独使用,但不能与其他JavaScript函数一起使用
- document.write和document.innerHTML以及其他javascript问题之间有什么区别
- 停止jQuery表单验证重置由其他JavaScript填充的typeahead.js输入字段
- jQuery插件干扰W/其他Javascript
- 是否可以将条件语句或其他javascript作为参数传递到ember句柄中
- 如果我用javascript隐藏了一个文本输入元素,那么其他javascript函数仍然可以访问输入到其中的值
- 如何在Chrome扩展名的内容JS文件中包含其他JavaScript文件
- 如何加载 jQuery 和其他 JavaScript 文件
- jQuery .click .appendTo 不加载其他 javascript
- 使用 jQuery 从其他 JavaScript 文件设置变量值
- 是否可以在GWT或任何其他JavaScript框架中选择垃圾收集算法
- 如何调用在其他 JavaScript 文件中定义的静态 JS 函数
- Twitter iframe和其他JavaScript获取前者内容的执行顺序