Javascript JQuery未传递SELECT表单参数
我有一个非常基本的任务,就是从SELECT表单元素传递一个选定的值,但它只传递SELECT语句的第一个选项,而不是实际的选定选项 以下是表单选择部分:Javascript JQuery未传递SELECT表单参数,javascript,jquery,Javascript,Jquery,我有一个非常基本的任务,就是从SELECT表单元素传递一个选定的值,但它只传递SELECT语句的第一个选项,而不是实际的选定选项 以下是表单选择部分: <p>Grade Level: <select id="gradeLevel"> <option value="">Please select...</option> <option value="primary">
<p>Grade Level:
<select id="gradeLevel">
<option value="">Please select...</option>
<option value="primary">Primary</option>
<option value="levelk">Level K</option>
<option value="level1">Level 1</option>
<option value="level2">Level 2</option>
<option value="level3">Level 3</option>
<option value="level4">Level 4</option>
<option value="level5">Level 5</option>
<option value="level6">Level 6</option>
<option value="level7">Level 7</option>
<option value="level8">Level 8</option>
</select>
</p>
<p>Test:
<select id="dropTest">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</p>
现在有趣的部分。。。如果我在控制台中键入JQuery命令$gradeLevel.val或$dropTest option:selected.val,它会提取正确的选定值
我完全迷路了。。。不知何故,正在提取正确的值,但传递的参数不正确?您将在文档上获得$gradeLevel.val
在那一刻,您在[select]和[select]中都选择了第一个选项,对吗
您应该在选择正确的选项后获得值。问题是$gradeLevel.val和$dropTest option:selected.val的值在脚本执行时被解析,因此它们总是设置为第一个默认元素。更改其他项目不会影响它们,因为它们已设置 根据,你应该这样做:
$(function() {
$('#file_upload').uploadifive({
'auto' : true,
'checkScript' : 'check-exists.php',
'onUploadStart' : function(file) {
// set formData here.
$('#file_upload').uploadifive('settings', 'formData', {
'timestamp' : '<?php echo $timestamp;?>',
'token' : '<?php echo md5('unique_salt' . $timestamp);?>',
'first' : $("#firstName").val(),
'last' : $("#lastName").val(),
'level' : $("#gradeLevel").val(),
'drop' : $("#dropTest option:selected").val()
});
},
'queueID' : 'queue',
'uploadScript' : 'uploadifive.php',
'onUploadComplete' : function(file, data) { console.log(data) }
});
});
相关问题:使用
$("#dropTest").val()
。。。或者
$("#dropTest option:selected").text()
这将首先为您提供所选的关联选项值。第二个选项将为您提供选项的文本
参考资料:试试这个:
$("button").on("click", function()
{
$('#file_upload').uploadifive({
'auto' : true,
'checkScript' : 'check-exists.php',
'formData' : {
'timestamp' : '<?php echo $timestamp;?>',
'token' : '<?php echo md5('unique_salt' . $timestamp);?>',
'first' : $("#firstName").val(),
'last' : $("#lastName").val(),
'level' : $("#gradeLevel").val(),
'drop' : $("#dropTest option:selected").val()
},
'queueID' : 'queue',
'uploadScript' : 'uploadifive.php',
'onUploadComplete' : function(file, data) { console.log(data) }
});
});
});
基本上,这将允许javascript在DOM加载后执行 是否有一个特定的事件,这是应该发生的?i、 e.单击按钮或选择项目更改?否,用户在表单中输入信息,然后选择要上载的文件。。。上载将触发该事件。我只需要上传所有表单数据就可以为上传的文件创建目录结构。这是我制作的一个屏幕记录,您可以看到实际的过程,以及我遇到的情况:这可能适用于Uploadify集合,但不适用于UploadFive。uploadStart事件不是一个选项。我在onUpload和onUploadFile事件中尝试了一种变体,但没有成功。我在选择选项中选择了不同的值,但它只传递第一个选项值,而不传递选定的值。使用Chrome中的开发工具,我可以键入$'gradeLevel'.val或$'dropText option:selected.val并获取所选值,但由于某些原因,它们无法通过,这只是第一个选项。我建议您添加一个发送按钮,并在单击时绑定事件。。否则,如果有人先上传图片,然后尝试完成数据,他们将无法完成,或者无法在之后发送表单。。这也可以解决你的小问题。不幸的是,他们没有点击按钮,一旦他们选择一个或多个文件,它就会自动上传。只需输入一次学生信息即可,因此对于事件更改来说,更改表单是不可行的。
$("#dropTest option:selected").text()
$("button").on("click", function()
{
$('#file_upload').uploadifive({
'auto' : true,
'checkScript' : 'check-exists.php',
'formData' : {
'timestamp' : '<?php echo $timestamp;?>',
'token' : '<?php echo md5('unique_salt' . $timestamp);?>',
'first' : $("#firstName").val(),
'last' : $("#lastName").val(),
'level' : $("#gradeLevel").val(),
'drop' : $("#dropTest option:selected").val()
},
'queueID' : 'queue',
'uploadScript' : 'uploadifive.php',
'onUploadComplete' : function(file, data) { console.log(data) }
});
});
});
$("select").on("change", function()
{
//Your code here
}