视图
第二种方法(原始函数)可行,但我想让我的函数更通用,换句话说,我想将其用于至少5个视图,这样我就不需要为每个视图传递选择器参数而编写5个功能。如何配置第一种形式(第一个函数)使其起作用?
@Html.DropDownList("DeptId", null, "-- Select --", htmlAttributes: new { @class = "form-control", @onchange = "changeDept(this)" })
Javascript函数
function changeDept(ddl) {
var lastValue = $(ddl).data('lastValue');
var newValue = $(ddl).val
var t = $(ddl + ' option:selected').text();
if (confirm("Are you sure you want to change from " + $(this).data('lastText') + " to " + ($(this) + 'option:selected').text() + "?")) {
$(this).data('lastValue', newValue);
}
else {
$(this).val(lastValue);
}
};
function selectDept(ddl) {
$(this).data('lastText', $($(this) + ' option:selected').text());
$(this).data('lastValue', $(this).val());
};
原始功能:
dept.change(function (e) {
var lastValue = $(this).data('lastValue');
var newValue = $(this).val();
if (confirm("Are you sure you want to change from " + $(this).data('lastText') + " to " + $('#DeptId option:selected').text() + "?")) {
$(this).data('lastValue', newValue);
}
else {
$(this).val(lastValue);
}
});
dept.each(function () {
//Store old value
$(this).data('lastText', $('#DeptId option:selected').text());
$(this).data('lastValue', $(this).val());
});
第二种方法(原始函数)可行,但我想让我的函数更通用,换句话说,我想将其用于至少5个视图,这样我就不需要为每个视图传递选择器参数而编写5个功能。如何配置第一种形式(第一个函数)使其起作用?
@Html.DropDownList("DeptId", null, "-- Select --", htmlAttributes: new { @class = "form-control", @onchange = "onChange(this)", @onblur = "onBlur(this)" })
function onChange(ddl) {
var $ddl = $(ddl);
var lastText = $ddl.data('lastText');
var lastValue = $ddl.data('lastValue');
var newText = $ddl.find(':selected').text();
var newValue = $ddl.val();
var bool = false;
if (lastText === undefined) {
bool = true;
}
else if (!confirm("Are you sure you want to change from " + lastText + " to " + newText + "?")) {
bool = true;
}
else {
bool = false;
$ddl.val(lastValue);
}
if (bool) {
$ddl.data('lastValue', newValue);
$ddl.data('lastText', newText);
}
};
function onBlur(ddl) {
var selectedOption = ddl.options[ddl.selectedIndex];
$(ddl).data('lastText', selectedOption.text).data('lastValue', selectedOption.value);
};
我的选择:
<div class="col-md-10">
<select class="form-control" id="DeptId" name="DeptId" onblur="onBlur(this)" onchange="onChange(this)">
<option value="">-- Select --</option>
<option value="1">Clothing</option>
<option value="2">Eletronics</option>
<option value="3">Housewares</option>
<option value="4">Technology</option>
<option value="5">Accessories</option>
<option value="6">Perfumary</option>
</select>
</div>
var newValue = $(ddl).val
缺少括号()
结尾。 - Satpalfor
循环。 - Satpal$($(this) + ' option:selected').text()
并不是你想象中的那样。请将其更改为$('option:selected', $(this)).text()
。 - phuzi