[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка текстового поля
Александр Мутылев
Привет всем. Подскажите, пожалуйста, как сделать проверку текстовых полей при переходе на другой пункт меню. То есть, мне нужно при переходе на другой пункт меню вывести сообщение о том, что некоторые поля были изменены. Сообщение я уже сделал. теперь нужно сделать проверку. Заранее спасибо)



Спустя 1 день, 5 часов, 35 минут, 18 секунд (27.06.2012 - 15:21) Александр Мутылев написал(а):
Никаких идей? user posted image

Спустя 7 минут, 35 секунд (27.06.2012 - 15:28) l@pteff написал(а):
Какие могут быть идеи, не видя кода?

Спустя 15 минут, 44 секунды (27.06.2012 - 15:44) fdr написал(а):
JS))

Спустя 16 минут, 5 секунд (27.06.2012 - 16:00) Александр Мутылев написал(а):
Вот код:

<body style="margin:0px;padding:0px">

<
div id=dark onClick="disHidden();" style='z-index:4;display:none;position:absolute;background:#505050;width:100%;height:100%;opacity:0.5;MozOpacity:0.5;KhtmlOpacity:0.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50)'></div>
<
div id=tablo style="position:fixed;padding:30;margin-top:35%;margin-left:35%;width:300px;border:4px solid #666666;z-index:5;background:#ffffff;display:none;">

<
div id=mess><center><font style=fantasy color=#d00000><b><h1>Попередження!</h1></b><img src="/scripts/Users/html/seperate.png" width="100%" height="100%" alt=""></font><br><b><h2>Дані була змінено!</h2></b></center></div>
<div style=text-align:center; padding-top:20px><input type="submit" name="save" value="Зберегти" onClick="#" style="cursor:pointer"/><margin-top:1.4em><input type="submit" name="off" value="Відміна" onClick="disHidden()" style="cursor:pointer"/><br/><br/></div>
</
div>

<
div align=center><a onClick="javascript:geta()" style='cursor:pointer'>Показати</a></div>

<
script>
function geta(){
document.getElementById('dark').style.height=document.body.scrollHeight;
document.getElementById('tablo').style.display='';
document.getElementById('dark').style.display='';
}
function disHidden(){
document.getElementById('tablo').style.display='none';
document.getElementById('dark').style.display='none';
}
</script>

<? defined('TRUST') or die(); ?>

<script type="text/javascript">
$(function() {
$("#userform").validationEngine();
$('#birthday').datepicker({
dateFormat: 'yy-mm-dd',
changeMonth: true,
changeYear: true,
yearRange: '<? echo (date('Y') - 50) . ':' . (date('Y') - 13); ?>'
});
$('#birthday').datepicker("setDate", '<? echo date('Y-m-d', $$class->data_u['birthday']); ?>');
});
$(function() {

var readonlys = $('.classrow input[readonly]');
var parent = readonlys.parent();
$(parent).addClass('dis');
$(readonlys).addClass('dis');
$('input.dis').val(0);
var sum_dis_parent = $('input.sum_dis').parent();
$(sum_dis_parent).addClass('dis');
NumberOfColumns = $('input.sum_dis').size();
$('.colspan6').attr("colspan",6-NumberOfColumns);
$('.colspan3').attr("colspan",3-(NumberOfColumns/2));

$("#schoolform").validationEngine({scroll:true});

$('.classrow input').change(function(event){
var sum_class = $(this).attr("class").charAt(0);
var total = parseInt('0',10);
var totalNumber = parseInt('0',10);
$('input.'+sum_class).each(function() {total = total+(parseInt(this.value,10));});
$('#sum_'+sum_class).val(total);
$('input.total').each(function() { totalNumber = totalNumber+(parseInt(this.value)); });

for_pay = parseInt($('#sum_a').val()) + parseInt($('#sum_b').val()) + parseInt($('#sum_c').val());

if(for_pay > 100){
koef = <? echo $$class->options['ratio_0']; ?>
}else if(for_pay > 50){
koef = <? echo $$class->options['ratio_1']; ?>
}else if(for_pay > 10){
koef = <? echo $$class->options['ratio_2']; ?>
} else{
koef = <? echo $$class->options['ratio_3']; ?>
}


//$('#debt').val(((for_pay*koef).toFixed(2)));
$('#debt').val((for_pay*koef).toFixed(2));
$('#debt2').val((for_pay*koef-for_pay*<?echo $$class->formula_2($auth->id);?>).toFixed(2));
$('#total_number').val(totalNumber);

});

/////////////////////////////////////////////////////////////////////////
$( "#city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "<? echo $route->site_url; ?>scripts/Users/ajax/fetch_cities.php",
dataType: "json",
data: {regionid: $('#regions').val(),query: request.term},
success: function( data ) {response( data ); }
}
);
},
minLength: 2,
select: function( event, ui ) {$('#city_id').val(ui.item.id);
jQuery.post("<? echo $route->site_url; ?>scripts/Users/ajax/fetch_districts.php", { id: ui.item.id }, function(data) {
if(data) $("div.district_div").html('<div>Район міста: </div>'+data);
});
}
}
);
/////////////////////////////////////////////////////////////////////////
});



function fetch_areas(dom_el){
jQuery.post("<? echo $route->site_url; ?>scripts/Users/ajax/fetch_areas.php", { id: $(dom_el).val() }, function(data) {
$("div.area_div").html('<div>Район області/м. обл. знач.: </div>'+data);

});
}
function nextEl(element)
{
var sum_class = $(element).attr('id');
sum_class = sum_class.charAt(0)+
(
parseInt(sum_class.charAt(1)+sum_class.charAt(2),10)+1);
$('#'+sum_class).focus();
}
</script>
<?if ($$class->block_edit == 1)
echo '<h2>Увага! Зміна персональних даних тимчасово заблокована адміністратором!</h2>';?>

<form action="users/index.html" method="post" id="userform">

<
div class="formline">
<
div>Прізвище, ім`я, по батькові:</div>
<
script type="text/javascript">
function myCheckValue()
{
var i = document.getElementById("real_name");
if (i.value != "<? echo htmlspecialchars($$class->data_u['real_name']); ?>")
alert("Text was changed!");
}
</script>
<
input type="text" name="real_name" id="real_name" maxlength="255" value="<? echo htmlspecialchars($$class->data_u['real_name']); ?>" class="textinput validate[required]" onKeyUp="myCheckValue()" />
</
div>
<
div class="formline">
<
div>Місце роботи:</div>
<
input type="text" name="workplace" id="workplace" value="<? echo htmlspecialchars($$class->data_u['workplace']); ?>" class="textinput validate[required]" />
</
div>
<
div class="formline">
<
div>Посада:</div>
<
input type="text" name="position" id="position" value="<? echo htmlspecialchars($$class->data_u['position']); ?>" class="textinput validate[required]" />
</
div>
<? if($auth->status==0 ) { ?>
<div class="formline">
<
div>Області:</div>
<? if (count($$class->user_regions)>0) { ?>
<?
foreach ($$class->user_regions as $key => $val) {
$$class->user_regions[$key] = $$class->regions_u[$val];
}
echo '<div style="text-align: left;">'.join('<br>', $$class->user_regions).'</div>';
?>
<?
} else { ?>
не визначенi
<? } ?>
</div>
<?}?>
<div class="formline">
<
div>Робочий телефон:</div>
<
input type="text" name="phone_u" id="phone_u" value="<? echo $$class->data_u['phone']; ?>" class="textinput" />
</
div>
<
div class="formline">
<
div>Мобільний телефон:</div>
<
input type="text" name="mobile_phone" id="mobile_phone" value="<? echo $$class->data_u['mobile_phone']; ?>" class="textinput" />
</
div>
<
div class="formline">
<
div>Електронна адреса:</div>
<
input type="text" name="email_u" id="email_u" value="<? echo htmlspecialchars($$class->data_u['email']); ?>" class="textinput" />
</
div>
<? if($auth->status==2 ) { ?>
<div class="formline">
<
div>Область: </div>
<?
if (isset($$class->user_area)) {
echo '<div style="text-align: left;">'. $$class->regions[$$class->user_area['region']].'</div>';
}?>
</div>
<
div class="formline">
<
div>Район області/м. обл. знач.: </div>
<? if (isset($$class->user_area)) {
echo '<div style="text-align: left;">'. $$class->user_area['name'].'</div>';

?>
<?
} else { ?>
не визначений
<? }?>
</div>
<?}?>
<?
if(($auth->status==2)||($auth->status == 0) ) {?>
<input type="hidden" name="city_id" id="city_id" value="<? echo $$class->address['city']; ?>" />
<
div class="formline">
<
div>Адреса:</div>
<
input type="text" name="address" id="address" value="<? echo htmlspecialchars($$class->address['address']); ?>" class="textinput validate[required]" />
</
div>
<
div class="formline">
<
div>Індекс:</div>
<
input type="text" name="index" id="index" value="<? echo $$class->address['index']; ?>" class="textinput validate[required,length[5,5],custom[onlyNumber]]" />
</
div>
<?}?>
<?
if($auth->status==1 || $auth->status==3){
if($auth->status==1){?>
<div><h2>Дані навчального закладу</h2></div>
<?}else{?>
<div><h2>Дані об'єднання шкіл</h2></div>
<?}?>
<div class="formline">
<div>Повна назва:</div>
<input type="text" maxlength="255" name="fullname" id="fullname" value="<?echo htmlspecialchars($$class->data['
fullname']); ?>" class="textinput validate[required]" />
</div>
<div class="formline">
<div>Скорочена назва:</div>
<input type="text" maxlength="255" name="shortname" id="shortname" value="<? echo htmlspecialchars($$class->data['
shortname']); ?>" class="textinput validate[required]" />
</div>
<?if($auth->status == 3){?>
<div class="formline">
<div>Кількість шкіл:</div>
<input type="text" maxlength="255" name="numschools" id="numschools" class="validate[required] validate[custom[onlyNumber]]" value="<? if($$class->data['
pupil_table']['numschools']>0)echo $$class->data['pupil_table']['numschools']; ?>"/>
</div>
<?}?>
<?if(($auth->status==1)||($auth->status==3)){?>
<div class="formline region_div">
<div>Область:</div>
<input type="text" name="regions" id="regions" class="textinput" value="<? echo $$class->regions[$$class->data['
region']]; ?>" readonly />
</div>
<div class="formline area_div">
<div>Район обл. / місто обл. знач.: </div>
<input type="text" name="area" id="area" class="textinput" value="<?$region_areas = $$class->fetch_region_areas($$class->data['
region']); echo $region_areas[$$class->data['area']]; ?>" readonly />
</div>
<?if ($$class->data_u['
isNotCity'] != 1 ){?>
<div class="formline city_div">
<div>Населений пункт:</div>
<input type="text" name="city" id="city" value="<? echo htmlspecialchars($$class->data['
city_name']); ?>" class="textinput" readonly />
</div>
<?}?>
<div class="formline district_div">
<?
$region_areas = $$class->fetch_city_districts($$class->data['
area']);
if (count($region_areas)> 0&&$$class->data['
city'] == 0) {
$region_areas[0] = '
Виберіть район міста!';
asort($region_areas);
echo '
<div>Район міста: </div>';
echo Html::build_select($region_areas, $$class->data['
district'], 'district', 'district');
} ?>
</div>
<?}?>
<div class="formline">
<div>Адреса:</div>
<input type="text" name="address" id="address" value="<? echo htmlspecialchars($$class->data['
address']); ?>" class="textinput validate[required]" />
</div>
<div class="formline">
<div>Індекс:</div>
<input type="text" name="index" id="index" value="<? echo $$class->data['
index']; ?>" class="textinput validate[required,length[5,5],custom[onlyNumber]]" />
</div>
<div class="formline">
<div>Телефон:</div>
<input type="text" name="phone" id="phone" value="<? echo $$class->data['
phone']; ?>" class="textinput validate[required,custom[ukrtelephone]]" />
</div>
<div class="formline">
<div>E-mail:</div>
<input type="text" name="email" id="email" value="<? echo htmlspecialchars($$class->data['
email']); ?>" class="textinput" />
</div>
<div class="formline">
<div>Код <? if ($auth->status == 3) echo '
об\'єднання'; else echo 'навчального закладу';?>:</div>
<
input type="text" name="code" id="code" value="<? echo $$class->data['code']; ?>" class="textinput" readonly />
</
div>
<
p id="amounterror"> </p>
<
table id="pupils" width="100%" cellpadding="0" cellspacing="0" bgcolor="white">
<
tr><th rowspan="3">Клас</th><th colspan="6" class="colspan6">Кількість учасників</th></tr>
<
tr>
<
th rowspan="2" <? if ($$class->options['lang_ukr'] == 0 )echo' class="dis"'; ?>>укр.</th>
<
th rowspan="2" <? if ($$class->options['lang_rus'] == 0 )echo' class="dis"'; ?>>рос.</th>
<
th rowspan="2" <? if ($$class->options['lang_eng'] == 0 )echo' class="dis"'; ?>>англ.</th>
<
th colspan="3" class="colspan3">Крім того дітей-сиріт</th>
</
tr>
<
tr>
<
th <? if ($$class->options['lang_ukr'] == 0 )echo' class="dis"'; ?>>укр.</th>
<
th <? if ($$class->options['lang_rus'] == 0 )echo' class="dis"'; ?>>рос.</th>
<
th <? if ($$class->options['lang_eng'] == 0 )echo' class="dis"'; ?>>англ.</th>
</
tr>


<? for ($i = 1; $i < 12; $i++) {
?>

<tr id="classrow<? echo $i; ?>" class="classrow<? if ($$class->options['class_' . $i] == 0 )echo' dis'; ?>">
<
td <? if ($$class->options['class_' . $i] == 0 )echo' class="dis"'; ?>><?= $i ?></td>
<
td><input id="a<? echo $i; ?>" type="text" value="<? echo 0 + $$class->data['pupil_table'][a . $i]; ?>" class="a num validate[custom[onlyNumber]]" name="a<? echo $i; ?>" <? if ($$class->options['lang_ukr'] == 0 || $$class->options['class_' . $i] == 0 )echo' readonly'; ?> onFocus="this.select()" onKeyPress="if(event.keyCode == 13){nextEl(this);}"/></td>
<
td><input id="b<? echo $i; ?>" type="text" value="<? echo 0 + $$class->data['pupil_table'][b . $i]; ?>" class="b num validate[custom[onlyNumber]]" name="b<? echo $i; ?>" <? if ($$class->options['lang_rus'] == 0 || $$class->options['class_' . $i] == 0 )echo' readonly'; ?> onFocus="this.select()" onKeyPress="if(event.keyCode == 13){nextEl(this);}"/></td>
<
td><input id="c<? echo $i; ?>" type="text" value="<? echo 0 + $$class->data['pupil_table'][c . $i]; ?>" class="c num validate[custom[onlyNumber]]" name="c<? echo $i; ?>" <? if ($$class->options['lang_eng'] == 0 || $$class->options['class_' . $i] == 0 )echo' readonly'; ?> onFocus="this.select()" onKeyPress="if(event.keyCode == 13){nextEl(this);}"/></td>
<
td><input id="d<? echo $i; ?>" type="text" value="<? echo 0 + $$class->data['pupil_table'][d . $i]; ?>" class="d num validate[custom[onlyNumber]]" name="d<? echo $i; ?>" <? if ($$class->options['lang_ukr'] == 0 || $$class->options['class_' . $i] == 0 )echo' readonly'; ?> onFocus="this.select()" onKeyPress="if(event.keyCode == 13){nextEl(this);}"/></td>
<
td><input id="e<? echo $i; ?>" type="text" value="<? echo 0 + $$class->data['pupil_table'][e . $i]; ?>" class="e num validate[custom[onlyNumber]]" name="e<? echo $i; ?>" <? if ($$class->options['lang_rus'] == 0 || $$class->options['class_' . $i] == 0 )echo' readonly'; ?> onFocus="this.select()" onKeyPress="if(event.keyCode == 13){nextEl(this);}"/></td>
<
td><input id="f<? echo $i; ?>" type="text" value="<? echo 0 + $$class->data['pupil_table'][f . $i]; ?>" class="f num validate[custom[onlyNumber]]" name="f<? echo $i; ?>" <? if ($$class->options['lang_eng'] == 0 || $$class->options['class_' . $i] == 0 )echo' readonly'; ?> onFocus="this.select()" onKeyPress="if(event.keyCode == 13){nextEl(this);}"/></td>
</
tr>

<? } ?>

<tr id="pupil_sum">
<
td>Усього</td>
<
td class="sizer"><input type="text" name="sum_a" class="total<? if ($$class->options['lang_ukr'] == 0 )echo' dis sum_dis'; ?>" id="sum_a" value="<? echo 0 + $$class->data['pupil_table']['sum_a']; ?>" readonly /></td>
<
td class="sizer"><input type="text" name="sum_b" class="total<? if ($$class->options['lang_rus'] == 0 )echo' dis sum_dis'; ?>" id="sum_b" value="<? echo 0 + $$class->data['pupil_table']['sum_b']; ?>" readonly /></td>
<
td class="sizer"><input type="text" name="sum_c" class="total<? if ($$class->options['lang_eng'] == 0 )echo' dis sum_dis'; ?>" id="sum_c" value="<? echo 0 + $$class->data['pupil_table']['sum_c']; ?>" readonly /></td>
<
td class="sizer"><input type="text" name="sum_d" class="total<? if ($$class->options['lang_ukr'] == 0 )echo' dis sum_dis'; ?>" id="sum_d" value="<? echo 0 + $$class->data['pupil_table']['sum_d']; ?>" readonly /></td>
<
td class="sizer"><input type="text" name="sum_e" class="total<? if ($$class->options['lang_rus'] == 0 )echo' dis sum_dis'; ?>" id="sum_e" value="<? echo 0 + $$class->data['pupil_table']['sum_e']; ?>" readonly /></td>
<
td class="sizer"><input type="text" name="sum_f" class="total<? if ($$class->options['lang_eng'] == 0 )echo' dis sum_dis'; ?>" id="sum_f" value="<? echo 0 + $$class->data['pupil_table']['sum_f']; ?>" readonly /></td>
</
tr>

</
table>

<
div class="totals">
<
p>Усього учасників: <input name="total_pupils" id="total_number" value="<? echo 0+$$class->data['total_pupils']; ?>" readonly /></p>
<
p>Сума організаційного внеску <? if ($auth->status == 3) echo 'об\'єднання'; else echo 'навчального закладу';?> (грн.):
<
input name="debt" id="debt" value="<? printf("%.2f",$$class->data['debt']); ?>" readonly /></p>
<
p>Кошти, що повинні бути сплачені <?
if ($auth->status == 3)
echo 'об\'єднанням ';
else
echo 'навчальним закладом ';
global $db;
$pe = $db->selectCell('select payments_reciver from ?_geo_regions where id = ?',$$class->data['region']);
switch($pe)
{
case 0:
default:
echo '';
break;
case 2:
echo 'орг. комітету';
break;
case 1:
echo ' регіональному представнику';
break;
case 3:
echo 'методисту';
break;
} ?> (грн.):
<
input name="debt2" id="debt2" value="<?
printf("
%.2f",$$class->data['debt2']);?>" readonly /></p>
</
div>

<
input type="hidden" name="city_id" id="city_id" value="<? echo $$class->data['city'];?>" />

<
input type ="hidden" name= "user" id="user" value = <?echo $$class->data['user'];?>>
<?}?>
<?

if ($$class->block_edit == 0)
echo Html::form_submiter('userform','','Зберегти');
else
echo '<h2>Увага! Зміна персональних даних тимчасово заблокована адміністратором!</h2>';
?>

</form>

Ссылка "показать" показывает нужное сообщение. Мне нужно, чтобы при выборе другого меню показывалось это сообщение. Если нужен код меню, отпишитесь)

Спустя 44 минуты, 14 секунд (27.06.2012 - 16:44) Guest написал(а):
ух ё. Зачем весь то кинул? Только проблемный кусок
Делается это 2мя способами. Вероятно оба и надо будет применить
когда юзер покидает поле - вызывать ф-ю проверки(джаваскриптом или аяксом)
Ели проверка занятости имени или емейла - тут аякс, а проверка количества и прочее - JS

Спустя 5 минут, 30 секунд (27.06.2012 - 16:50) Александр Мутылев написал(а):
Цитата (Guest @ 27.06.2012 - 13:44)
ух ё. Зачем весь то кинул? Только проблемный кусок
Делается это 2мя способами. Вероятно оба и надо будет применить
когда юзер покидает поле - вызывать ф-ю проверки(джаваскриптом или аяксом)
Ели проверка занятости имени или емейла - тут аякс, а проверка количества и прочее - JS

Дак там же уйма полей. У меня тогда сообщение будет выскакивать после каждого перехода. Я так пробовал)). Мне нужно, чтобы при выборе другого меню выскакивало это сообщение, если что-то было изменено. Да и проверка - не важно. я как-то сделаю. Скажите, как обратится к это проверке при переходе. Пожалуйста)

Спустя 4 минуты, 50 секунд (27.06.2012 - 16:55) Guest написал(а):
onfocusout

Спустя 2 минуты, 59 секунд (27.06.2012 - 16:58) Александр Мутылев написал(а):
Цитата (Guest @ 27.06.2012 - 13:55)
onfocusout

Не то(

Спустя 4 минуты, 56 секунд (27.06.2012 - 17:02) Guest написал(а):
ммм smile.gif Это общее понятие потери фокуса
Для мышки - это онмаусовер
для клавы(табом) - это делается на следующее поле проверка предыдущего(с этим на самом деле геммор) и все эти правила между собой надо соеденить, что бы что-то отработало

Так же можно по "кейдоун" ловить, но тут юрез мог не закончить а уже проверка прошла
или как вариант по кейдауну делать задержку в 3 сек после чего запускать ф-ю. Как только ещё раз нажал в этом поле - по новой запускать задержку(это более сложно)

Спустя 26 минут, 4 секунды (27.06.2012 - 17:29) Александр Мутылев написал(а):
Цитата (Guest @ 27.06.2012 - 14:02)
ммм smile.gif Это общее понятие потери фокуса
Для мышки - это онмаусовер
для клавы(табом) - это делается на следующее поле проверка предыдущего(с этим на самом деле геммор) и все эти правила между собой надо соеденить, что бы что-то отработало

Так же можно по "кейдоун" ловить, но тут юрез мог не закончить а уже проверка прошла
или как вариант по кейдауну делать задержку в 3 сек после чего запускать ф-ю. Как только ещё раз нажал в этом поле - по новой запускать задержку(это более сложно)

брбрбрбр))) sad.gif и как к этому событию обратится глобально?

Спустя 2 часа, 52 минуты, 45 секунд (27.06.2012 - 20:21) vital написал(а):
Раздел форума php+sql =\

Спустя 1 час, 30 минут, 13 секунд (27.06.2012 - 21:51) Invis1ble написал(а):

 ! 

М
Перемещено
Invis1ble

Спустя 11 часов, 4 минуты, 31 секунда (28.06.2012 - 08:56) ApuktaChehov написал(а):
Александр Мутылев - когда страница сформировалась, запускаете скрипт JS, который создаст объект в памяти, который отразит ваши поля и их значения.
После этого вы будете иметь сохраненную копию состояния всех полей до того, как юзер мог их изменить.

Теперь, если вы собираетесь уходить с этой страницы запускаете скрипт, который сверяет новое состояние полей с тем, что хранится в памяти. При обнаружении отличий - выдавать сообщение.

Вот и все. Если полей совсем много, тяжеловато получится, но думаю браузер справится =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.