Он работает на моей скрипке http://jsfiddle.net/JustJill54/XFaaG/11/,, но не работает, когда я добавляю код jQuery в CEWP.(К сведению. Я помещаю jQuery в CEWP только для подтверждения концепции.) Разница только в том, что когда я просматриваю src в результате на скрипте, есть событие Window.Load (), поэтому я попытался добавить это событие в мой CEWP, нопредупреждение все еще не работает.
Вот код от CEWP
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(window).load(function(){
$(document).ready(function() {
$("tr.reqDet").hide();
$("tr.anon").hide();
$("tr.actDet").hide();
// Attach to the focusout event of the select, if that's when
// you want to check the value
$("select[title='organizationalElement']").focusout(function() {
// Now see if it's the value you want
if ($(this).val() === 'idk') {
alert("If no organizational element is selected, additional time may be required to route this request");
} //close if
$("select[title='requestType']").change(function() {
$(".reqDet").toggle($(this).val() !== "");
}); //close requestType
$("select[title='anonymous']").change(function() {
$(".anon").toggle();
}); //close anonymous
$("select[title='action']").change(function() {
$(".actDet").toggle($(this).val() !== "");
}); //close action
}); //close select.focusout
}); //close doc.ready
}); //close window.load
</script>
ОБНОВЛЕНИЕ: Я закомментировал всю свою логику и просто попытался получить предупреждение AN, чтобы показать, когда страница загружается, и ядо сих пор не удалось заставить его работать.
ОБНОВЛЕНИЕ2: я создал страницу .html с теми же элементами управления, что и у моей страницы SharePoint, и добавил скрипт jQuery для отображения оповещения о загрузке страницы, и даже этотработает, но страница ASPX с SharePoint: элементы управления FormField не работают.
ОБНОВЛЕНИЕ3: Я ссылался на учебник по JavaScript и исправил свой скрипт.Основное отличие состоит в том, что операторы NOT EQUAL были изменены на! =, И я прокомментировал событие Window.load.Вот мой пересмотренный скрипт:
//$(window).load(function(){
$(document).ready(function(){
$("tr.reqDet").hide();
$("tr.anon").hide();
$("tr.actDet").hide();
$("select[title='organizationalElement']").focusout(function() {
if ($(this).val() === 'idk') {
alert("If no organizational element is selected, additional time may be required to route this request");
} // close if
$("select[title='requestType']").change(function() {
$(".reqDet").toggle($(this).val() != "");
}); //close requestType.change
$("select[title='anonymous']").change(function(){
$(".anon").toggle();
}); //close anonymous.change
$("select[title='action']").change(function(){
$(".actDet").toggle($(this).val()!= "");
}); // close action.change
});//close select.focusout
}); // close doc.ready
//}); // close window.load
UPDATE4: я использовал firebug, чтобы получить val селектора, и понял, что он не возвращает idk (как указано в значении элемента списка SP), а возвращает "Я не знаю "вместо этого.Это поднимает еще одну проблему / напоминает мне, что мне нужно избегать апостроф (') в не.В любом случае, все еще работаем над изломами ...
ОБНОВЛЕНИЕ5: @ Janis - Я не могу увидеть свой скрипт на вкладке скриптов в Firebug ... Так что я предполагаю, что это означает, что он не выполняется.
Кстати.Вот состояние скрипта после UPDATE4.
$(window).load(function(){
$(document).ready(function(){
$("tr.reqDet").hide();
$("tr.anon").hide();
$("tr.actDet").hide();
$("select[title='organizationalElement']").focusout(function() {
if ($(this).val() === "I don\'t know") {
alert("If no organizational element is selected, additional time may be required to route this request");
} // close if
$("select[title='requestType']").change(function() {
$(".reqDet").toggle($(this).val() != "");
}); //close requestType.change
$("select[title='anonymous']").change(function(){
$(".anon").toggle();
}); //close anonymous.change
$("select[title='action']").change(function(){
$(".actDet").toggle($(this).val()!= "");
}); // close action.change
});//close select.focusout
}); // close doc.ready
}); // close window.load
Есть идеи почему?Я думал, что использую довольно общие события, которые всегда вызываются (doc.ready, window.load).
ОБНОВЛЕНИЕ 6: Боже ... НАКОНЕЦ!Угадай, 6-й раз это очарование.Я определенно собираюсь рассказать всем о том, что сработало для меня .... В любом случае, пересмотренный скрипт выглядит следующим образом:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(window).load(function(){
$(document).ready(function(){
$("tr.reqDet").hide();
$("tr.anon").hide();
$("tr.actDet").hide();
$("select[title='organizationalElement']").focusout(function() {
if ($(this).val() === "I don\'t know") {
alert("If no organizational element is selected, additional time may be required to route this request");
} // close if
$("select[title='requestType']").change(function() {
$(".reqDet").toggle($(this).val() != "");
}); //close requestType.change
$("select[title='anonymous']").change(function(){
$(".anon").toggle();
}); //close anonymous.change
$("select[title='action']").change(function(){
$(".actDet").toggle($(this).val()!= "");
}); // close action.change
});//close select.focusout
}); // close doc.ready
}); // close window.load
</script>
Вместо того, чтобы вставлять непосредственно в CEWP, я загружаю его в виде файла .js.в созданную мной папку с именем SiteAssets (в случае, если мы перейдем на SPD2010), и я вызываю указанный файл ... js через ссылку на контент CEWP.Использовал firebug для проверки загрузки скрипта.
Итак, некоторые вещи, которые я узнал о том, как заставить этот скрипт jQuery работать для меня на моей странице SP-
- Не предполагайте, что вы знаете, что возвращается val - используйтевкладка консоли firebug для получения точных результатов
- Проверьте свой синтаксис
- Даже при обращении к коду jQuery в файле ... js убедитесь, что он запускается с необходимыми тегами, поэтому вы можете завершитьс вашим скриптом, вставленным в виде текста внизу страницы. Надеюсь, это поможет!