我有一个选择字段,其内容根据另一个选择字段而变化。随着我的脚本被禁用,我的选择帖子很好,并插入我的数据库。但是,当我用javascript来选择字段时,我的发布值默认为默认值(“1”)。我也在运行chzn(http://harvesthq.github.io/chosen/),但问题仍然存在,即使它被禁用。这是我的JS:使用javascript处理后,选择选项无法正确发布
$(function() {
var $dropdown = $("#type");
var $for = $("#for");
$for.clone().attr('id', 'for2').insertAfter($for).hide();
$for2 = $('#for2');
function getType() {
$type = $dropdown.val();
return $type;
}
function checkType($type) {
if ($type == 1) {
$for.find('.skin').remove();
$for2.find('.champion').clone().appendTo($for).trigger("liszt:updated");
} else if ($type == 2) {
$for.find('.champion').remove();
$for2.find('.skin').clone().appendTo($for).trigger("liszt:updated");
}
}
getType();
checkType($type);
$dropdown.change(function() {
getType();
checkType($type);
});
});
是什么原因导致此问题?为寻找谢谢:)
编辑运行alert($for.find($("option:selected")).text());
确实返回我选择的选项。我真的不明白为什么它没有发布。
EDIT2我可以得到它通过附加(隐藏)文本字段工作,并设置它的价值时,我更新我的控制器选择变化,当然使用了“价值”:
$('<input/>').attr({ type: 'text', id: 'for-value', name: 'for-value' }).insertAfter($for).hide();
$forValue = $('#for-value');
$for.change(function() {
$forVal = $for.val();
$forValue.val($forVal);
});
但是,这是如此丑陋....为什么我不能按常规方式得到它?我错过了什么吗?
EDIT3 按照要求,HTML:
<form action="insert" method="POST">
...
<label for="type">type</label>
<select id="type" name="type">
<option value="1">Champion</option>
<option value="2">Skin</option>
</select>
<label for="for">For</label>
<select id="for" name="for">
@foreach ($skins as $skin)
<option class="skin" value="{{ $skin->id }}">{{ $skin->name }}</option>
@endforeach
@foreach ($champions as $champion)
<option class="champion" value="{{ $champion->id }}">{{ $champion->name }}</option>
@endforeach
</select>
...
<button>Insert</button>
</form>
edit4更糟糕的是,通过Stano的建议,包括名称,而克隆使得它的工作,甚至工作,如果我删除链中的属性:
$for.clone().attr('id', 'for2').insertAfter($for).hide(); //doesn't work.
$for.clone().attr({ id: 'for2', name: 'for2' }).insertAfter($for).hide(); //works
$for.clone().attr({ id: 'for2', name: 'for2' }).removeAttr('name')
.insertAfter($for).hide(); //works even if I remove the attribute
一件事说 - 你从返回的getType $类型函数但不存储它,即$ type = getType();然而你还没有在函数中声明$ var,因此无论如何它都是全局的。 – PaulMrG
我真的需要存储吗?我正在执行加载功能。我不知道我是否在跟踪你想说的话。 – veksen
是的,我正在使用PHP。没有JS的情况下,这些值会很好地发布。名称已设置。如果我使用文本字段并将其值设置为更改时的选择值,则可以使其工作,但是,像这样:array(...'type'=>'2','for'=>' 1','for-value'=>'6',...)'for-value是使用'$('#for-value')。val($ for.val())的文本字段的值。 ;' – veksen