PDA

View Full Version : جلوگیری از paste داخل تکس



رضا قربانی
چهارشنبه 10 فروردین 1390, 04:18 صبح
سلام و خسته نباشید خدمت تمامی دوستان


من یک فرم دارم که یک تکس باکس یا textarea داخلش هست به این صورت


<form id="form1" name="form1" method="post" action="">
<label>
<textarea name="textarea"></textarea>
</label>
<p>
<label>
<input type="submit" name="Submit" value="Send" />
</label>
</p>
</form>حالا من می خوام یک سری محدودیت هایی بهش بدم - اس کیو ال اینجکشن ها رو ردیف کردم
می خوام کاربر نتونه متنی از جایی کپی کنه و داخل این تکس paste کنه یا Ctrl+v - یعنی فقط باید به صورت دستی بنویسه !!


برای اینکار باید از جاوا استفاده کنیم که باید اول کلیک راست رو برای تکس غیر فعال کنیم و بعد Ctrl+V :لبخند:
ولی من کدش رو نمی دونم و ممنون می شم که کمکمون کنید

با تشکر

sargardoon
چهارشنبه 10 فروردین 1390, 07:51 صبح
سلام و خسته نباشید خدمت تمامی دوستان


من یک فرم دارم که یک تکس باکس یا textarea داخلش هست به این صورت


<form id="form1" name="form1" method="post" action="">
<label>
<textarea name="textarea"></textarea>
</label>
<p>
<label>
<input type="submit" name="Submit" value="Send" />
</label>
</p>
</form>حالا من می خوام یک سری محدودیت هایی بهش بدم - اس کیو ال اینجکشن ها رو ردیف کردم
می خوام کاربر نتونه متنی از جایی کپی کنه و داخل این تکس paste کنه یا Ctrl+v - یعنی فقط باید به صورت دستی بنویسه !!



برای اینکار باید از جاوا استفاده کنیم که باید اول کلیک راست رو برای تکس غیر فعال کنیم و بعد Ctrl+V :لبخند:
ولی من کدش رو نمی دونم و ممنون می شم که کمکمون کنید

با تشکر


این کد رو بذار توی قسمت header
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#comments').bind('paste', function (e) {
e.preventDefault();
alert("You cannot paste text into this textbox!");
});
});
</script>

ای دی textarea رو هم بذار comments یا هر چیزی که دوست داری. اگر در فورم چند تا فیلد داری میتونی با گرفتن id، و شرط if چند تایی که میخواهی رو بلوک کنی. امیدوارم که متوجه منظورم شده باشی، اگر مشکلی داشتی بگو تا برات حلش کنم

موفق باشید.

رضا قربانی
چهارشنبه 10 فروردین 1390, 16:12 عصر
این کد رو بذار توی قسمت header
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#comments').bind('paste', function (e) {
e.preventDefault();
alert("You cannot paste text into this textbox!");
});
});
</script>

ای دی textarea رو هم بذار comments یا هر چیزی که دوست داری. اگر در فورم چند تا فیلد داری میتونی با گرفتن id، و شرط if چند تایی که میخواهی رو بلوک کنی. امیدوارم که متوجه منظورم شده باشی، اگر مشکلی داشتی بگو تا برات حلش کنم

موفق باشید.
ممنون کار کرد.
دو تا سوال :
من اگه بخوام برای یک text دو تا ID تعریف کنم باید چی کار کنم؟ یعنی مثلا یکی از آی دی ها comments و یکی دیگه Reza می خوام از هر دوتاش روی این تکس اعمال کنم؟

من الان توی فرم مثلا سه تا تکس دارم باید چطوری توی if قرار بدم ؟

sargardoon
چهارشنبه 10 فروردین 1390, 17:45 عصر
ممنون کار کرد.
دو تا سوال :
من اگه بخوام برای یک text دو تا ID تعریف کنم باید چی کار کنم؟ یعنی مثلا یکی از آی دی ها comments و یکی دیگه Reza می خوام از هر دوتاش روی این تکس اعمال کنم؟

من الان توی فرم مثلا سه تا تکس دارم باید چطوری توی if قرار بدم ؟

دوست عزیز به این مثال توجه کن

<html>
<head>
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$(':input').keydown(function(){
var fldID = $(this).attr("id");

if (fldID == 'email' || fldID == 'comments') {
$('#'+fldID).bind('paste', function (e) {
e.preventDefault();h
});
}

});
});
</script>
</head>

<body>
<form name="aForm">
first name: <input name="fname" type="text" id="fname" /> <br />
last name: <input name="lname" type="text" id="lname" /> <br />
email: <input name="email" type="text" id="email" /> <br />
url: <input name="url" type="text" id="url" /> <br />
comments: <textarea id='comments' name="textarea"></textarea>
</form>
</body
</html>

امیدوارم که به کارتون بیاد.

رضا قربانی
پنج شنبه 11 فروردین 1390, 11:25 صبح
من اگه بخوام برای یک text دو تا ID تعریف کنم باید چی کار کنم؟ یعنی مثلا یکی از آی دی ها comments و یکی دیگه Reza می خوام از هر دوتاش روی این تکس اعمال کنم؟

<textarea id="comments" id="Reza"></textarea>

کسی می دونه ؟ یا اصلا امکانش نیست ؟

binyaft
پنج شنبه 11 فروردین 1390, 12:10 عصر
نمیشه ، کلاس تعریف کنید .

Mr.Moghadam
پنج شنبه 11 فروردین 1390, 12:24 عصر
<textarea class="comments" id="Reza"></textarea>

رضا قربانی
دوشنبه 15 فروردین 1390, 03:12 صبح
دوست عزیز به این مثال توجه کن

<html>
<head>
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$(':input').keydown(function(){
var fldID = $(this).attr("id");

if (fldID == 'email' || fldID == 'comments') {
$('#'+fldID).bind('paste', function (e) {
e.preventDefault();h
});
}

});
});
</script>
</head>

<body>
<form name="aForm">
first name: <input name="fname" type="text" id="fname" /> <br />
last name: <input name="lname" type="text" id="lname" /> <br />
email: <input name="email" type="text" id="email" /> <br />
url: <input name="url" type="text" id="url" /> <br />
comments: <textarea id='comments' name="textarea"></textarea>
</form>
</body
</html>امیدوارم که به کارتون بیاد.
نه نشد
متاسفانه هر کاری انجام دادم نتونستم درستش کنم

این چیزی که شما نوشتید و گذاشتین داخل if فکر نکنم درست باشه . یکبار خودتون تست کنید ببینید برای شما جواب می ده ، شاید من اشتباه می کنم؟

sargardoon
دوشنبه 15 فروردین 1390, 07:27 صبح
نه نشد
متاسفانه هر کاری انجام دادم نتونستم درستش کنم

این چیزی که شما نوشتید و گذاشتین داخل if فکر نکنم درست باشه . یکبار خودتون تست کنید ببینید برای شما جواب می ده ، شاید من اشتباه می کنم؟
من اینرو امتحان شده گذاشتم، دوباره تست کردم جواب داد.
باید یادتو باشه آدرس فایل jquery.min.js باید درست باشه، یا شما این فایل رو به هراسمی که ذخیره کردید.

من به اینصورت هم امتحان کردم

<html>
<head>
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#aForm :input').keydown(function(){
var fldID = $(this).attr("id");

if (fldID == 'email' || fldID == 'comments') {
$('#'+fldID).bind('paste', function (e) {
e.preventDefault();h
});
}

});
});
</script>
</head>

<body>
<form name="aForm" id='aForm'>
first name: <input name="fname" type="text" id="fname" /> <br />
last name: <input name="lname" type="text" id="lname" /> <br />
email: <input name="email" type="text" id="email" /> <br />
url: <input name="url" type="text" id="url" /> <br />
comments: <textarea id='comments' name="textarea"></textarea>
</form>

<form name="aForm" id='aForm1'>
first name: <input name="fname" type="text" id="fname" /> <br />
last name: <input name="lname" type="text" id="lname" /> <br />
email: <input name="email" type="text" id="email" /> <br />
url: <input name="url" type="text" id="url" /> <br />
comments: <textarea id='comments' name="textarea"></textarea>
</form>
</body
</html>

هردو جواب داد. در این روش بالا فقط یه ID برای فورم تعریف کردم که اگر چند تا فورم داشته فقط روی فرم مخصوصی این ارزیابیهای بشه.

رضا قربانی
دوشنبه 15 فروردین 1390, 23:45 عصر
آها ااااا حالا شد . یادت باشه به فرم هم باید ID بدیم و حرف h هم حذف کنیم :بامزه:


آقا یه چیزی . من براش آلرت میذارم و وقتی پیام میده برای اولی یکبار پیام رو نشون می ده و وقتی روی دومی زدی دو بار و سه بار و ....... مشکلش چیه

<script type="text/javascript">
$(document).ready(function () {
$('#aForm :input').keydown(function(){
var fldID = $(this).attr("id");

if (fldID == 'email' || fldID == 'comments') {
$('#'+fldID).bind('paste', function (e) {
e.preventDefault();
alert("دوست من لطفا در فیلد مورد نظر تایپ نمایید");
});
}

});
});
</script>

sargardoon
سه شنبه 16 فروردین 1390, 00:23 صبح
آها ااااا حالا شد . یادت باشه به فرم هم باید ID بدیم و حرف h هم حذف کنیم :بامزه:


آقا یه چیزی . من براش آلرت میذارم و وقتی پیام میده برای اولی یکبار پیام رو نشون می ده و وقتی روی دومی زدی دو بار و سه بار و ....... مشکلش چیه

<script type="text/javascript">
$(document).ready(function () {
$('#aForm :input').keydown(function(){
var fldID = $(this).attr("id");

if (fldID == 'email' || fldID == 'comments') {
$('#'+fldID).bind('paste', function (e) {
e.preventDefault();
alert("دوست من لطفا در فیلد مورد نظر تایپ نمایید");
});
}

});
});
</script>
آره اگر چند فرم داشته باشی بهتره که ای دی بدی ولی اگر یکی باشه ضروری نیست، در رابطه با اون h زمانی که کپی میکردم اون چاپ شده

در رابطه با پیغام اگر توجه کنی زمانی که برای بار دوم به بعد پیغام میده یه checkbox زیر پیغام نشون میده و یه چیزهایی نوشته که اگر اون رو فعال کنی دیگه نشون نمیده. (البته تا جایی که من فهمیدم)، حقیقش رو بخواهی چون من خودم زیاد با alert حال نمیکنم ترجیح میدم کنار باکس پیغام رو چاپ کنم و رنگ باکس هم تغییرش بدم.

یه نکته اگر میخواهید میتوانید با استفاده از استایل رنگ باکس هایی که فعال هستند (get focus) را تغییر بدی برای مثال:
input:focus {
background-color: #C3FDB8;
border: 1px solid #4CC417;
}

موفق باشید.

رضا قربانی
سه شنبه 16 فروردین 1390, 03:22 صبح
داداش یه عیب اساسی !!!!!!

دفعه اول ، کلیک راست و گزینه paste که می گیره !!!!!!!!! . تست کن. من با تمام مرورگر ها تست کردم . منتها همشون تا زمانی که ctrl+v نزدیم کلیک راست paste قبول می کنه


چطوری پیام خطا رو کنار تکس قرار بدم ؟

امیـرحسین
سه شنبه 16 فروردین 1390, 18:09 عصر
بدون جی‌کوئری هم خیلی ساده میشه:

<input type="text" onpaste="return false;" name="fild" value="" />
<textarea name="txt" onpaste="return false;"></textarea>
البته تا جایی که یادم میاد این Event جدیده و من اولین بار توی سایت موزیلا دیدم. این یعنی انتظار پشتیبانی کاملی از طرف اینترنت‌اکسپلورر نداشته باشید.

رضا قربانی
جمعه 19 فروردین 1390, 13:16 عصر
بدون جی‌کوئری هم خیلی ساده میشه:

<input type="text" onpaste="return false;" name="fild" value="" />
<textarea name="txt" onpaste="return false;"></textarea>
البته تا جایی که یادم میاد این Event جدیده و من اولین بار توی سایت موزیلا دیدم. این یعنی انتظار پشتیبانی کاملی از طرف اینترنت‌اکسپلورر نداشته باشید.

یعنی با اینترنت اکسپلورر جواب نمی ده ؟

رضا قربانی
جمعه 19 فروردین 1390, 13:20 عصر
مجبور شدم اینطوری عمل کنم که حجم کد نویسی بالا میره !!! اما جواب صحیح می ده

$(document).ready(function () {
$('#Fam').bind('paste', function (e) {
e.preventDefault();
alert("You cannot paste text into this textbox!");
});
});






$(document).ready(function () {
$('#email').bind('paste', function (e) {
e.preventDefault();
alert("You cannot paste text into this textbox!");
});
});




$(document).ready(function () {
$('#comments').bind('paste', function (e) {
e.preventDefault();
alert("You cannot paste text into this textbox!");
});
});

sargardoon
شنبه 20 فروردین 1390, 16:36 عصر
اره حق با شماست، خودم هم امتحان کردم درست بود، بذار کمی جستجو کنم شاید روش بهتری برات پیدا کنم، من خودم هم توی ajax و jquery تازه واردم.

sargardoon
دوشنبه 22 فروردین 1390, 07:24 صبح
دوست عزیز برای کمتر شدن میتونی از این روش هم استفاده کنی که من در مرورگرهای Google Chrome و FireFox امتحان کردم جواب داد


<html>
<head>
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function disablePaste(value)
{
$('#'+value).bind('paste', function (e) {
e.preventDefault();
});
}
</script>
</head>

<body>
<form name="aForm" id='aForm'>
<label>first name:</label> <input name="fname" type="text" id="fname" /> <br />
<label>last name:</label> <input name="lname" type="text" id="lname" /> <br />


<label>email:</label> <input name="email" type="text" onFocus="disablePaste(this.id)" id="email" /> <br />


<label>url:</label> <input name="url" type="text" id="url" /> <br />
<label>comments:</label> <textarea id='comments' name="textarea"></textarea>
</form>

<form name="aForm" id='aForm1'>
<label>first name:</label> <input name="fname" type="text" id="fname" /> <br />
<label>last name:</label> <input name="lname" type="text" id="lname" /> <br />
<label>email:</label> <input name="email" type="text" id="email" /> <br />
<label>url:</label> <input name="url" type="text" id="url" /> <br />
<label>comments:</label> <textarea id='comments' name="textarea"></textarea>
</form>
</body>
</html>

اگر باز هم مشکل داشتی در خدمتیم

رضا قربانی
دوشنبه 22 فروردین 1390, 20:06 عصر
توی اپرا جواب نمی ده !!!!