Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Поомгите убрать передачу ID (https://javascript.ru/forum/jquery/15998-poomgite-ubrat-peredachu-id.html)

tazododu 22.03.2011 17:54

Поомгите убрать передачу ID
 
Есть
<textarea id="short_description"></textarea>
<div class="notify2" id="short_description_left"></div>


Сделал проверку ограничения символов
function check_field_length(event) {
	var maxlength = event.data.maxlength;
	var fieldname = event.data.fieldname;
	var dif = maxlength - $(fieldname).val().length;
	if(dif < 0) {
		var message = '<span style="color:red">превышено допустимое кол-во символов на ' + dif + '</span>'
	}else {
		var message = "осталось символов " + dif;
	}
	$(fieldname + "_left").html(message);
}

$(function() {
  $("#short_description")
     .bind("keydown keyup paste click", {maxlength: 60, fieldname: '#short_description'}, check_field_length)
     .click();
});


как бы подпилить, чтобы не нужно было передавать fieldname, как можно получить ID textarea внутри check_field_length? :-?

tazododu 22.03.2011 18:52

если же писать функцию прям внутри bind, this есть. но как же сделать если необходимо использовать отдельную функцию?

$("#category-autocomplete").bind("keydown keyup paste click", 
		{num: 100},
		function(event) { 
			var num = event.data.num;
			var id = $(this).val("id"); 
			alert(id);
		}
	);

рони 22.03.2011 21:59

Вариант установки и индикации maxlength для textarea и input ...
<!DOCTYPE html>
<html>
<head>
  <title></title>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  <script type="text/javascript">
 (function (a) {
    a.fn.setMaxlength = function () {
        var e = arguments;
        return this.each(function (i) {
                var b = a(this),
                c = e[i]||"50";
            b.attr("maxlength")&&b.attr("maxlength", c);
            var d = a("<span />").css({
                color: "#FF0000"
            });
            b.after(d);
            d.html("({num} out of {max})".replace("{num}", b.val().length).replace("{max}", c));
            b.bind("keypress keydown keyup paste click mouseup", function (e) {
                var g = a(this).val();
                 if (g.length >= c){
                 a(this).val(g.substring(0,c));
            d.html("Max = "+c);
                }

           else     d.html("({num} out of {max})".replace("{num}", g.length).replace("{max}", c))
            })
        })
    }
})(jQuery);

 $(function() {
 $("textarea, input").setMaxlength(60,15,10);
 //$("#short_description").setMaxlength(60);
});
</script>
</head>

<body>
<textarea id="short_description"  cols="60"></textarea>
<br />
<input name="a" />
<br />
<input name="b" />
<br />
<input name="c" />
<br />
<input name="d" />
<br />
</body>
</html>

tazododu 23.03.2011 09:46

рони
спасибо за пример. но все же хотелось бы узнать, как передать this в функцию bind?...

рони 23.03.2011 09:56

tazododu,
event.currentTarget

tazododu 24.03.2011 11:50

рони
спасибо, почитаю.


Часовой пояс GMT +3, время: 18:03.