2016-06-04 4 views
0

У меня есть две страницы, как это:Дополнительный персонаж из текстового поля

test.html

<!DOCTYPE html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
</head> 

<body> 
<form method="POST" action="test2.php"> 
    <textarea id="input" name="input" cols="100px" rows="15" wrap="soft" placeholder="put input here"></textarea> 
    <button type="button" onclick="getLength()">Get length </button><p id="length"> </p></div> 
    <br > 
    <input type="submit"> 
</form> 

<script> 
function getLength(){ 
    var len=$('textarea').val().length; 
    $('#length').text(len); 
} 
</script> 
</body> 
</html> 

И test2.php

<?php 
echo strlen($_POST['input']); 
?> 

Когда я ввожу некоторые ввода, например: "aa[pressEnter]aa", он должен echo 5 на странице test2.php, но вместо этого он отображает 6.

Так почему же это 6 (что является дополнительным символом)?

спасибо за чтение!

+1

Скорее всего, строка – mplungjan

ответ

1

Возврат считается дополнительным символом в хроме.

Фактически возвращается 2 символа-побега \ r \ n. В хроме требуется один символ (idk why), в краю он принимает это как 2 символа, поэтому aa [enter] aa ​​суммирует до 6 символов

EDIT: есть 2 части, одна из которых - это исправление js для удаления возвратной каретки и один PHP исправить

JS исправить в HTML файл

<!DOCTYPE html> 
<head> 

</head> 

<body> 
<form method="POST" action="test2.php"> 
    <textarea id="input" name="input" cols="100px" rows="15" wrap="soft" placeholder="put input here"></textarea> 
    <button type="button" onclick="getLength()">Get length </button><p id="length"> </p></div> 
    <br > 
    <input type="submit"> 
</form> 

<script> 
function getLength(){ 

    var fixedText = $('textarea').val(); 

    fixedText = fixedText.replace(/(\r\n|\n|\r)/gm, ""); 

    var len=fixedText.length; 

    $('#length').text(len); 
} 
</script> 
</body> 
</html> 

PHP исправить

<?php 

    $data = str_replace("\r\n",'',$_POST['input']); 
    echo strlen($data); 

?> 

Вам просто нужно заменить возвратные кареты \ r \ n, \ r и \ n на "".

+0

Привет, я тестировал это на Chrome и Firefox, это приводит к тому же. Можете ли вы предложить какой-то способ получить ввод от пользователя без добавления символа. – user173717

+0

Привет, в моем коде код javascript работает хорошо («aa [pressEnter] aa» равно 5), только когда строка отправлена ​​на php-страницу, тогда она добавила один charecter, поэтому мне просто нужно изменить php-код, например $ data = str_replace («\ r \ n», «\ n», $ _ POST ['input']), и он работает. – user173717

+0

О! Ладно, рад, что вы решили свою проблему: D С удовольствием помогите! : D – hulkinBrain

Смежные вопросы