Описание проблемы: Я столкнулся с некоторой проблемой при использовании laravel escape-котировок при использовании компонента laravelcollective/html. Мне нужно, чтобы кавычки оставались незащищенными, чтобы сохранить код javascript.Предотвращение выхода одиночных кавычек при использовании laravelcollective/html в формах с шаблоном лезвия
Puropose of code: Пользователь должен указать, когда он хочет оставить поле формы пустым. Если они этого не делают, требуется некоторый ввод. Я не хочу, чтобы пользователь указывал, что поле пустое и что он подает некоторый ввод одновременно. Это поведение контролируется javascript, удаляя флажок установленного флажка при нажатии переключателя и наоборот.
В форме есть несколько полей (каждый с переключателями и флажок, если поле должно быть пустым). Перед отправкой формы все должны быть проверены javascript. Каждое поле имеет свое имя.
Кода лезвия для поля:
<div>
{!! Form::checkbox('field_empty',1,null, ['id' => 'field_empty'] !!}
</div>
<div>
{!! Form::radio('field', 0, null, ['onClick' => 'unselectCheckbox(this,'field_empty')'] !!}
{!! Form::radio('field', 1, null, ['onClick' => 'unselectCheckbox(this,'field_empty')'] !!}
{!! Form::radio('field', 2, null, ['onClick' => 'unselectCheckbox(this,'field_empty')'] !!}
</div>
Javascript код:
function unselectCheckbox(box,field)
{
if (box.value >= 0)
{
document.getElementsById(field).checked = false;
}
}
(У меня также есть яваскрипт функции для удаления кнопки проверяются радио при нажатии на флажок, но я Бесполезная 't включить его в код.)
При использовании вышеуказанного кода я получаю ошибку laravel из-за одиночных кавычек вокруг' field_empty '. Удаление одиночных кавычек не приводит к работе js. Использование двойных кавычек приводит к «"» в сгенерированном html.
Конечно, я мог бы использовать простой html вместо лезвия - и поэтому не рекомендуется использовать {!! !!}, но мне было интересно, можно ли это сделать в лезвии или, может быть, используя другой подход в javascript?
Edit: Моя форма содержит несколько элементов, которые должны быть проверены. Каждый элемент имеет свое собственное имя, с соответствующим флажком для подтверждения пустого значения:
<div>
{!! Form::checkbox('field1_empty', 1, null, ['id' => 'field_empty']) !!}
</div>
<div>
{!! Form::radio('field1', 0, null) !!}
{!! Form::radio('field1', 1, null) !!}
{!! Form::radio('field1', 2, null) !!}
</div>
<div>
{!! Form::checkbox('field2_empty', 1, null, ['id' => 'field_empty']) !!}
</div>
<div>
{!! Form::radio('field2', 0, null) !!}
{!! Form::radio('field2', 1, null) !!}
{!! Form::radio('field2', 2, null) !!}
</div>
<div>
{!! Form::checkbox('field3_empty', 1, null, ['id' => 'field_empty']) !!}
</div>
<div>
{!! Form::radio('field3', 0, null) !!}
{!! Form::radio('field3', 1, null) !!}
{!! Form::radio('field3', 2, null) !!}
</div>
Благодарим вас за этот ответ. Однако, поскольку у меня есть около 15 различных полей ввода, я должен, вероятно, создать массив для обеих переменных (пустой и поле) и пропустить эти массивы, правильно? Например. пустым [1], пустым [2], ... и соответствующим полем [1], поле [2], .... Во-вторых, я по-прежнему смотрю, возможно ли предотвратить исключение одиночных кавычек в клинке код. –
Я обновил свой ответ с помощью решения для использования котировок внутри значений атрибутов. Если вы хотите, чтобы я помог с вашим другим вопросом о входных полях, вам нужно будет включить всю свою форму. – Bogdan
Привет, я пробовал работать с массивами javascript и прокручивать их, чтобы адаптировать ваш скрипт, но это не помогло, вероятно, из-за того, как javascript обрабатывает массивы. Поэтому я отредактировал свой пост, чтобы включить в него больше полей. Я продолжу поиск того, как адаптировать ваш скрипт, прежде чем вернуться к моему оригинальному подходу с событиями onClick. –