#javascript #jquery #jquery-ui #yii
#javascript #jquery #jquery-пользовательский интерфейс #yii
Вопрос:
Я новичок в js, я скопировал скрипт из jqueryui.com для виджета диалога и вставил его в свой проект Yii, но я получил сообщение об ошибке: Uncaught TypeError: undefined не является функцией, которая является функцией $( "#dialog-form" ).dialog
, так в чем ошибка и как я могу ее исправить, здесьявляется ли код:
$(function() {
var name = $( "#name" ),
email = $( "#email" ),
password = $( "#password" ),
allFields = $( [] ).add( name ).add( email ).add( password ),
tips = $( ".validateTips" );
function updateTips( t ) {
tips
.text( t )
.addClass( "ui-state-highlight" );
setTimeout(function() {
tips.removeClass( "ui-state-highlight", 1500 );
}, 500 );
}
function checkLength( o, n, min, max ) {
if ( o.val().length > max || o.val().length < min ) {
o.addClass( "ui-state-error" );
updateTips( "Length of " n " must be between "
min " and " max "." );
return false;
} else {
return true;
}
}
function checkRegexp( o, regexp, n ) {
if ( !( regexp.test( o.val() ) ) ) {
o.addClass( "ui-state-error" );
updateTips( n );
return false;
} else {
return true;
}
}
$( "#dialog-form" ).dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Create an account": function() {
var bValid = true;
allFields.removeClass( "ui-state-error" );
bValid = bValid amp;amp; checkLength( name, "username", 3, 16 );
bValid = bValid amp;amp; checkLength( email, "email", 6, 80 );
bValid = bValid amp;amp; checkLength( password, "password", 5, 16 );
bValid = bValid amp;amp; checkRegexp( name, /^[a-z]([0-9a-z_]) $/i, "Username may consist of a-z, 0-9, underscores, begin with a letter." );
// From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
bValid = bValid amp;amp; checkRegexp( email, /^((([a-z]|d|[!#$%amp;'* -/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]) (.([a-z]|d|[!#$%amp;'* -/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]) )*)|((x22)((((x20|x09)*(x0dx0a))?(x20|x09) )?(([x01-x08x0bx0cx0e-x1fx7f]|x21|[x23-x5b]|[x5d-x7e]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(\([x01-x09x0bx0cx0d-x7f]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))))*(((x20|x09)*(x0dx0a))?(x20|x09) )?(x22)))@((([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).) (([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).?$/i, "eg. ui@jquery.com" );
bValid = bValid amp;amp; checkRegexp( password, /^([0-9a-zA-Z]) $/, "Password field only allow : a-z 0-9" );
if ( bValid ) {
$( "#users tbody" ).append( "<tr>"
"<td>" name.val() "</td>"
"<td>" email.val() "</td>"
"<td>" password.val() "</td>"
"</tr>" );
$( this ).dialog( "close" );
}
},
Cancel: function() {
$( this ).dialog( "close" );
}
},
close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}
});
$( "#create-user" )
.button()
.click(function() {
$( "#dialog-form" ).dialog( "open" );
});
});
Комментарии:
1. Вы загрузили jquery [правильно]?
2. @RUJordan да, он загружен.
3. Я не могу вспомнить, сколько вопросов с этим названием я видел.
4. А вы загрузили пользовательский интерфейс jQuery?
5. При загрузке jQuery вам будет предложено настроить пакет, который вы хотите. Вам нужно будет убедиться, что у вас есть функция .dialog . Я почти уверен, что это ваша проблема.
Ответ №1:
Вы включили что-то вроде
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
Комментарии:
1. Можете ли вы объяснить, почему я был отклонен? Я новичок на сайте
2. Вы проголосовали против, потому что, хотя вас пригласили внести свой вклад, некоторые люди считают, что ваш ответ вводит в заблуждение или неверен. Эти люди твердо убеждены, что они должны сообщить, что ваш ответ далек от идеального (я этого не разделяю), поэтому они голосуют против вас. Добро пожаловать на Землю. Мы хорошо относимся друг к другу.
Ответ №2:
проблема решена, потому что я загрузил пакет jquery по умолчанию вместо настроенного пакета Jquery, который содержит виджет диалогового окна.