yii2
, с помощью js
надо поменять значение поля формы input type="range"
на другое (получаю от сервера запросом).
Когда я задаю ему значение (через js
), после отправки на сервер оно почему-то теряется.
Вопрос: какой атрибут забирает php экшен и какой атрибут устанавливает js? Как вытащить тот атрибут, который забирает php?
поле формы:
<?=
$form->field($check, 'brightnessLevel')
->label('Яркость')
->input('range', [
'id' => 'brightness',
'value' => 0,
'min' => -100,
'max' => 100
])
?>
функция:
function setDefaultValue() {
var xhmlhr = new XMLHttpRequest();
xhmlhr.withCredentials = true;
xhmlhr.open('GET', '/url/url');
xhmlhr.send();
xhmlhr.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200)
defalutVal = xhmlhr.responseText;
brightness.setAttribute('disabled', true);
brightness.value = defalutVal;
changeBrightness();
}
}
P.S. экшен:
public function actionUpdate($id)
{
$check = new EditingImage();
$model = $this->findModel($id);
if ($check->load(Yii::$app->request->post())) {
// if ($model->save()){
// }
// здесь значение теряется (если не таскать сам ползунок, а именно через js пытаться устанавливать)
$check->status = $check::STATUS_ON;
$check->dir = Images::IMAGES_DIR;
$check->url = $model->url;
if ($check->increaseBrightness())
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('update', [
'model' => $model,
'check' => $check,
]);
}
pss
console.log('defalutVal: ' + defalutVal);
console.log('brightnessVal: ' + brightness.value);
brightness.value = defalutVal;
console.log('brightness.value = defalutVal (' + brightness.value + ')');
Не знаю почему не желаете пробовать с фигурными скобками как подсказал @Stepan Kasyanenko. Без них JS
будет каждый раз выбрасывать исключение defalutVal is not defined
, так как до ответа эта переменная не определена.
Проверьте, не отключен ли показ ошибок в консоли.
let handler = function() {
if (this.readyState === 4 && this.status === 200) {
defalutVal = this.responseText;
brightness.setAttribute('disabled', true);
brightness.value = defalutVal;
}
state.innerText = `readyState ${this.readyState}`
}
for (let i = 1; i < 5; i++) {
setTimeout(() => handler.call({
readyState: i,
status: i === 4 && 200,
responseText: 50
}), 500 * i);
}
<div id="state">readyState</div>
<input id="brightness" type="range" min="-100" max="100" value="0">
надо было убрать эту строку:
brightness.setAttribute('disabled', true);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здраствуйте, должен решить уравнение z^3 - 1 = 0, z - комплексное число
Необходимо поменять местами две строки матрицыНашел в интернете несколько примеров в которых используется поэлементный обмен
Допустим есть черно-белое изображение размера 10x10 пикселей, то его нужно перевести в матрицу 10x10 в которой черному цвету будет соответствовать...