C# 对象没有';在jquery mvc4中不支持此属性 @Scripts.Render(“~/bundles/jquery”、“~/bundles/jqueryui”、“~/bundles/WorkbenchScripts”) @样式。渲染(“~/Content/workbenchcs”) $(文档).ready(函数(){ 选中SpecialChars(“#txtCreateSet”); $('#btnCancelSet')。单击(函数(e){ window.close(); }); }); //此函数用于仅允许函数中的特定字符 功能检查专用卡(textboxID){ 调试器; 返回textboxID.each ( 函数(){ var allowedChars=“ABCDEFGHIJKLMNOPQRSTUVWXYZ”; allowedChars+=“ABCDEFGHIJKLMNOPQRSTUVXYZ”; allowedChars+=“0123456789”; allowedChars+=“”;//空格 //检查是否尝试为名称字段指定允许的特殊字符 allowedChars+=“-”; //按键 $(textboxID).按键(功能(e){ var keyUniCode=!e.charCode?e.which:e.charCode; var charValue=String.fromCharCode(keyUniCode); if(keyUniCode!=13){ if(允许字符索引Of(字符值)=-1) e、 预防默认值(); } }); //粘贴 $(textboxID).bind('paste',函数(e){ setTimeout(函数(){ var newText=textboxID.val(); $.each(新文本,函数(i){ if(allowedChars.indexOf(newText.charAt(i))=-1) {textboxID.val(textboxID.val().replace(newText.charAt(i),'');} }); }, 1); }); } ); }; @Label(“创建集”) @Html.TextBoxFor(model=>model.SetName,新的{id=“txtCreateSet”})

C# 对象没有';在jquery mvc4中不支持此属性 @Scripts.Render(“~/bundles/jquery”、“~/bundles/jqueryui”、“~/bundles/WorkbenchScripts”) @样式。渲染(“~/Content/workbenchcs”) $(文档).ready(函数(){ 选中SpecialChars(“#txtCreateSet”); $('#btnCancelSet')。单击(函数(e){ window.close(); }); }); //此函数用于仅允许函数中的特定字符 功能检查专用卡(textboxID){ 调试器; 返回textboxID.each ( 函数(){ var allowedChars=“ABCDEFGHIJKLMNOPQRSTUVWXYZ”; allowedChars+=“ABCDEFGHIJKLMNOPQRSTUVXYZ”; allowedChars+=“0123456789”; allowedChars+=“”;//空格 //检查是否尝试为名称字段指定允许的特殊字符 allowedChars+=“-”; //按键 $(textboxID).按键(功能(e){ var keyUniCode=!e.charCode?e.which:e.charCode; var charValue=String.fromCharCode(keyUniCode); if(keyUniCode!=13){ if(允许字符索引Of(字符值)=-1) e、 预防默认值(); } }); //粘贴 $(textboxID).bind('paste',函数(e){ setTimeout(函数(){ var newText=textboxID.val(); $.each(新文本,函数(i){ if(allowedChars.indexOf(newText.charAt(i))=-1) {textboxID.val(textboxID.val().replace(newText.charAt(i),'');} }); }, 1); }); } ); }; @Label(“创建集”) @Html.TextBoxFor(model=>model.SetName,新的{id=“txtCreateSet”}),c#,jquery,asp.net-mvc,asp.net-mvc-4,razor,C#,Jquery,Asp.net Mvc,Asp.net Mvc 4,Razor,在上面的代码中,我得到错误“对象不支持此属性”,我使用的是MVC4,这里我在mvc视图中编写了代码,在文本框中只允许使用0-9 a-z a-z-_和空格字符。我哪里做错了?有人能帮我得到所需的解决方案吗?这是因为您将选择器字符串传递给函数,而不是对象 请看这里: @Scripts.Render("~/bundles/jquery", "~/bundles/jqueryui", "~/bundles/WorkbenchScripts") @Styles.Render("~/Content/Work

在上面的代码中,我得到错误“对象不支持此属性”,我使用的是MVC4,这里我在mvc视图中编写了代码,在文本框中只允许使用0-9 a-z a-z-_和空格字符。我哪里做错了?有人能帮我得到所需的解决方案吗?

这是因为您将选择器字符串传递给函数,而不是对象

请看这里:

@Scripts.Render("~/bundles/jquery", "~/bundles/jqueryui", "~/bundles/WorkbenchScripts")
@Styles.Render("~/Content/WorkbenchCss")
<script type="text/javascript">

    $(document).ready(function () {
        checkSpecialChars('#txtCreateSet');
        $('#btnCancelSet').click(function (e) {
            window.close();
        });
    });


    //this function is used to allow only specific characters in function
    function checkSpecialChars(textboxID) {
        debugger;

        return textboxID.each
            (
                function () {
                    var allowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                    allowedChars += "abcdefghijklmnopqrstuvwxyz";
                    allowedChars += "0123456789";
                    allowedChars += " "; //Space
                    //Check if try to specifying allowed special characters for Name fields
                    allowedChars += "-_";
                    //on keypress
                    $(textboxID).keypress(function (e) {
                        var keyUniCode = !e.charCode ? e.which : e.charCode;

                        var charValue = String.fromCharCode(keyUniCode);

                        if (keyUniCode != 13) {
                            if (allowedChars.indexOf(charValue) == -1)
                                e.preventDefault();
                        }
                    });
                    //On paste
                    $(textboxID).bind('paste', function (e) {
                        setTimeout(function () {
                            var newText = textboxID.val();
                            $.each(newText, function (i) {
                                if (allowedChars.indexOf(newText.charAt(i)) == -1)
                                { textboxID.val(textboxID.val().replace(newText.charAt(i), '')); }
                            });
                        }, 1);
                    });
                }
            );
            };
</script>






<table>
        <tr>
            <td>
              @Html.Label("Create Set")
            </td>
            <td>
             @Html.TextBoxFor(model => model.SetName, new { id = "txtCreateSet" })
            </td>
        </tr>
<table>
这意味着当您执行以下操作时,您将得到该错误,因为字符串上没有
每个
方法:

checkSpecialChars('#txtCreateSet');
尝试以下操作,传递jQuery对象:

return textboxID.each

很多时候,你能告诉我checkSpecialChars(“#txtCreateSet”)和checkSpecialChars($(“#txtCreateSet'))之间有什么区别吗?将它包装在
$()
中意味着你告诉jQuery去获取与字符串选择器匹配的所有内容。在您的情况下,获取ID为
txtCreateSet
的所有内容(
#
表示在ID上搜索)。如果没有
$()
,它实际上只是字符串
#txtCreateSet
checkSpecialChars($('#txtCreateSet'));