C# 选定选项

C# 选定选项,c#,jquery,visual-studio-2013,asp.net-mvc-5.2,C#,Jquery,Visual Studio 2013,Asp.net Mvc 5.2,看法 Javascript函数 @Html.DropDownList("DeptId", null, "-- Select --", htmlAttributes: new { @class = "form-control", @onchange = "changeDept(this)" }) 原始功能: function changeDept(ddl) { var lastValue = $(ddl).data('lastValue'); var newValue = $(d

看法

Javascript函数

@Html.DropDownList("DeptId", null, "-- Select --", htmlAttributes: new { @class = "form-control", @onchange = "changeDept(this)" })
原始功能:

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());
};
原始函数的第二种工作方式,但我希望使我的函数通用,换句话说,我希望对至少5个视图使用它,因此我不需要为每个通过选择器参数的视图创建5个函数。如何配置第一个form first函数使其工作

实际上:

我的选择:

@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);
};

当您使用内嵌html的处理程序时,它们在全局上下文中调用,所以这个内部函数引用全局对象,在本例中是:窗口。因此,您需要使用传递的参数来替换此关键字

函数OnChangeddl{ var$ddl=$ddl; var lastValue=$ddl.data'lastValue'; var newText=$ddl.find':selected'.text; var newValue=$ddl.val; 如果确认,是否确实要从+$ddl.data'lastText'+更改为+newText+{ $ddl.data'lastValue',newValue; $ddl.data'lastText',newText; }否则{ $ddl.vallastValue; } } 函数onBlurddl{ var selectedOption=ddl.options[ddl.selectedIndex]; $ddl.data'lastText',selectedOption.text.data'lastValue',selectedOption.value; }; 1. 2. 3. 4. 5. 6.
语句var newValue=$ddl.valIt结尾处缺失只是一次尝试。。我知道这是错的。我知道。changefunction相当于@onchange,什么相当于。eachfunction?你知道吗?如果我是你,我会坚持现有的功能。因为我从不推荐丑陋的内联事件处理程序。您可以使用simple for Loop,您可以给我举个例子吗?$$this+'选项:selected。文本并不像您想象的那样。将其更改为$'option:selected',$this.text回答很好,非常好,谢谢!但是当我第一次选择另一个元素时,有一个小错误,返回我您确定要从未定义更改为NEWVALUE吗?。。我怎样才能解决这个问题?再次感谢。@developer033,您第一次期望的行为是什么?第一次您没有保存lastValue和lastText,所以可能需要检查$ddl.data'lastText'==是否未定义,然后不运行确认并只保存lastValue和lastTextNice,它可以工作,我是JS新手,您能帮我做最后一件事吗?如何设置-选择-禁用?我看到了很多例子,但是使用普通的Html选择而不是DropDownList。你能回答我吗顺便说一句,我更新了我的代码。我尝试了类似:$ddl.find$ddl.val.attr'disabled'、'disabled'@developer033,而不是$ddl.find'[value=]'.attr'disabled','disabled';。你能展示一下你是如何填写这个下拉列表的吗?我看到你通过了
@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>