我使用bootstrap 3选择插件让我的下拉列表更加花哨。它完美无缺,直到我向页面添加一个简单的RequiredFieldValidator
以进行另一个控件,例如文本框。所有美丽的下拉菜单都会变为典型的下拉菜单。
这是我的HTML:
<asp:DropDownList ID="ddlCategories" runat="server" CssClass="show-menu-arrow selectpicker" DataSourceID="dsCategories" DataTextField="CategoryName" DataValueField="CategoryID">
</asp:DropDownList>
和JS:
$(window).on('load', function () {
$('.selectpicker').selectpicker({
});
});
我知道Asp.Net验证器会在页面中添加一些Javascript代码,我猜它们会引起一些冲突。我也使用$.noConflict()
但没有成功。
我需要知道如何解决这个问题。
编辑:
渲染的标记是这样的:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title>
<script src="/js/jquery-1.10.2.min.js"></script>
<script src="/js/bootstrap.js"></script>
<script src="/js/bootstrap-select.js"></script>
<link href="/assets/css/bootstrap.css" rel="stylesheet" />
<script type="text/javascript">
$(window).on('load', function () {
$('.selectpicker').selectpicker({
});
});
</script>
</head>
<body>
<form method="post" action="Test2.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="Lu54Lc5gUoMcES3FS5vAFbfEDc2WKzPnEz29Y/3ecH2fPQjmLCl030G8zXJfv035qxsI7TaEKDLL7vpb2xD61vH7RnpFzze8sAOGlMFp+Vw=" />
</div>
<script src="/WebResource.axd?d=x2nkrMJGXkMELz33nwnakDs9KKDZZn2GO2GOnzQ8bhnAg5hg1uDK_xxs2F4qGzZL4suzNGfgwk1f_Kqd7w6GL2Mz9JWbGv_Uo50eVnuTPU81&t=634773918900000000" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
//]]>
</script>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="vRZe0MAmYSmodYTkQXHZO1ZKY9EsMANgK1GXMQfTQ/Lke9yD8gU8jV56OwuAerfGHV5FTQnt+m2zQwARykzPYNpaD2HUK+lPDeGfKZazORSavMSQXAZHoeLR8Yzltk+3oS5ytg9B7n2ikrVh+v5DI1Ags0aEZzExyTTjsOFgBxOaBU8PcHXOyE/7XMK3TTOx" />
</div>
<div>
<select name="DropDownList1" id="DropDownList1" class="show-menu-arrow selectpicker">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
<input name="TextBox1" type="text" id="TextBox1" />
<span data-val-controltovalidate="TextBox1" data-val-errormessage="RequiredFieldValidator" id="RequiredFieldValidator1" data-val="true" data-val-evaluationfunction="RequiredFieldValidatorEvaluateIsValid" data-val-initialvalue="" style="visibility:hidden;">RequiredFieldValidator</span>
</div>
</form>
</body>
</html>
答案 0 :(得分:0)
我认为你是在正确的方式,没有你实现的jQuery的冲突版本。
请尝试:
<script type="text/javascript">
jQuery.noConflict();
jQuery(window).on('load', function () {
jQuery('.selectpicker').selectpicker({
});
});
</script>
答案 1 :(得分:0)
尝试在页面末尾调用所有与Bootstrap相关的脚本
答案 2 :(得分:0)
我终于找到了答案!当我第一次在这个项目的页面上使用验证器时,我收到一个错误:“WebForms UnobtrusiveValidationMode需要一个ScriptResourceMapping用于'jquery'。”
我用Google搜索并在this SO page上找到了2个解决方案。一个建议禁用ASP.Net 4.5的新功能,另一个建议添加一些代码来正确配置它。
我选了后者(将ScriptResourceMapping
添加到Application_Start
)。我在项目的其他地方遇到了这个问题。
经过几天的挣扎,没有在这里得到答案,我突然意识到这可能是问题的原因。
所以我改变了我的代码,并在Web.config中添加了一些键,现在它完美运行了!